在Apache内部的PHP脚本中使用ZeroMQ

Ale*_*dre 5 php apache zeromq

我想使用ZeroMQ发布者/订阅者将我的Web应用程序中的数据分发到多个服务器.

我使用Apache和PHP作为Web应用程序,我的PHP脚本的工作原理如下:

//Initialization
$context = new ZMQContext();
$publisher = $context->getSocket(ZMQ::SOCKET_PUB);
$publisher->bind("tcp://*:5556");

//Then publishing for testing:

$publisher->send("test");
$publisher->send("test");
$publisher->send("test");
$publisher->send("test");
$publisher->send("test");
Run Code Online (Sandbox Code Playgroud)

为了测试,我从python的文档中修改了一个订阅者:

import sys
import zmq

#  Socket to talk to server
context = zmq.Context()
socket = context.socket(zmq.SUB)

socket.connect ("tcp://localhost:5556")

# Subscribe to zipcode, default is NYC, 10001
socket.setsockopt(zmq.SUBSCRIBE, "")

print "Waiting..."
# Process 5 updates
for update_nbr in range (5):
    string = socket.recv()
    print string
Run Code Online (Sandbox Code Playgroud)

当我从命令行运行php脚本但不通过Apache工作时(当脚本通过Web浏览器运行时),整个过程都有效.

我应该对Apache配置做些什么来使其工作?

谢谢

亚历山大

Ale*_*dre 2

看来唯一的问题是没有时间建立连接。

在绑定之后和发送之前在发布者上添加睡眠确实解决了问题,尽管不是很优雅。

这个问题的解释如下:

http://zguide.zeromq.org/page:all#Getting-the-Message-Out