php - ZeroMQ 和 PHP-FPM

标签 php nginx zeromq

我刚刚遇到一个问题,即 PHP 中的 ZeroMQ 在命令行上使用时似乎可以正常工作,但在 FPM 进程中却不能。有没有其他人观察到这种行为?有一个简单的解决方案吗?也许这是权限管理问题或其他问题?不幸的是,根本没有错误消息。


服务器是从命令行启动的:

$context = new ZMQContext;
$socket = new ZMQSocket($context, ZMQ::SOCKET_PULL);
$socket->bind('ipc:///tmp/test.sock');
while (true) echo $socket->recv();

另一个脚本位于我的本地网络服务器上(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 tickets,这是一个已知问题,但他们无意修复它:

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/

相关文章:

PHP MySQL 表继承

Kubernetes 的 Nginx 入口 "Connection refused"

ssl - 使用 nginx 进行 aws api 网关客户端 ssl 证书验证

ZeroMQ,XSUB没有收到

php - 使用 GD 为 iPhone OS 4.1 编译 PHP

php - 向数据库php插入大量数据

amazon-ec2 - 将 Rails 3.1 应用程序部署到 Amazon Ec2

python - 为什么ZMQ路由器有时会丢失消息?

python - ZeroMQ 无法在 [0.0.0.0 :5555] - address already in use. 上的 Docker 上进行 .bind() 为什么?

php - 我想将数据库中的整个 blob (.bin) 文件保存到数组中