ZeroMQ and PHP-FPM



我刚刚遇到一个问题,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 bug ticket,这是一个已知的问题,但是他们不打算修复它:

https://github.com/zeromq/libzmq/issues/48

我还尝试更改权限,就像在其他线程上显示的那样(并确认我成功地将它们创建为0777,当在文件系统中查看时),但是没有使用zeromq:

UNIX域套接字不能跨用户访问?

我也最终放弃使用TCP。

最新更新