我正在研究使用此处提到的棘轮的基本教程http://socketo.me/docs/push。
我已经为教程创建了一个完美无缺的测试设置。但是,当我尝试将设置与CakePHP 3集成时,我遇到了问题。棘轮和ZMQ服务器是独立的,只是教程中提到的方式。只需要下面的代码就可以进入CakePHP 3控制器:
$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'my pusher');
$socket->connect("tcp://localhost:5555");
$socket->send(json_encode($entryData));
此代码基本上将新数据提交到ZMQ队列以转发到棘轮。如果我将相同的4行放在CakePHP 3代码库之外的普通PHP文件中,它就可以工作了。当我在APP \ Controller \ SamplesController中放置相同的四行时,它表示找不到类APP \ Controller \ ZMQContext。
CakePHP 3文档提到通过composer安装的供应商库将通过自动加载器自动提供。我通过以下命令安装了React \ ZMQ库:
php composer require react/zmq
我尝试通过以下命名空间访问该类,但它们都没有工作:
ZMQContext ( Class 'App\Controller\ZMQContext' not found )
\ZMQContext ( Class 'App\Controller\ZMQ' not found )
React\ZMQ\ZMQContext ( Class 'App\Controller\React\ZMQ\ZMQContext' not found )
\React\ZMQ\ZMQContext ( Class 'React\ZMQ\ZMQContext' not found )
可能错过了PHP中的一些命名空间概念,但我的理解是,如果ZMQContext通过全局命名空间在普通的PHP文件中可用,那么它也应该通过\ ZMQContext在CakePHP 3中可用。
我有以下问题:
答案 0 :(得分:0)
这是一个简单的拼写错误问题:
$context = new \ZMQContext();
$socket = $context->getSocket(\ZMQ::SOCKET_PUSH, 'my pusher');
$socket->connect("tcp://localhost:5555");
$socket->send(json_encode($entryData));
第二行中的第二个命名空间规范缺失。