我刚刚遇到一个问题,php中的zeromq在命令行上使用时似乎可以正常工作,但在fpm进程中却不能正常工作。还有人注意到这种行为吗?有简单的解决办法吗?也许是权利管理之类的问题?不幸的是,根本没有错误消息。
服务器从命令行启动:
$context = new ZMQContext;
$socket = new ZMQSocket($context, ZMQ::SOCKET_PULL);
$socket->bind('ipc:///tmp/test.sock');
while (true) echo $socket->recv();
另一个脚本位于本地Web服务器(nginx+php fpm)上:
$context = new ZMQContext;
$socket = new ZMQSocket($context, ZMQ::SOCKET_PUSH);
$socket->connect('ipc:///tmp/test.sock');
$socket->send('Test Message');
如果从命令行执行此脚本,则消息将毫无问题地传输到zmq服务器。如果我通过浏览器执行脚本,什么都不会发生。
最佳答案
根据ZeroMQ错误通知单,这是一个已知问题,但他们无意修复:
https://github.com/zeromq/libzmq/issues/48
我还尝试更改权限,如在其他线程上所示(并确认在文件系统中查看时已成功将其创建为0777),但ZeroMQ没有成功:
UNIX domain sockets not accessable across users?
我也最终放弃了使用tcp。
关于php - ZeroMQ和PHP-FPM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31387794/