这个问题是如此具体我害怕没有人能够帮助我...我已经从在Mac上开发到PC,并且我的所有项目都在本地机器上工作(使用XAMPP)除了我的ZMQ插座。
ZMQ显然正在工作,因为当我将消息推送到拉套接字时,它会收到消息(因此拉动和推送似乎工作正常)。但是当这个消息随后发布时,似乎没有任何东西可以解决它。起初我以为它是客户端(基于闪存),但奇怪的是,当我连接到在线服务器(具有相同的套接字代码)时,它接收已发布的消息没有问题。我尝试编写一个小的zmq订阅套接字,然后使用发布套接字进行测试,但这似乎也没有响应。我不仅有点难过。
这是套接字的代码(带有伪造的端口号):
$context = new ZMQContext();
$pub = $context->getSocket(ZMQ::SOCKET_PUB);
$pub->bind("tcp://*:4321");
$pull = $context->getSocket(ZMQ::SOCKET_PULL);
$pull->bind("tcp://*:4322");
while (true) {
$request = $pull->recv();
$pub->send($request);
echo PHP_EOL."PUBLISHING: $request".PHP_EOL;
}
我尝试在Windows防火墙上打开端口,然后一起关闭防火墙,但这不是问题。这可能是ZMQ的安装吗?还是php绑定?当我检查phpinfo()时,它似乎已正确加载,并且它与服务器上的版本相同(有效)。我有什么基本的错过吗?
答案 0 :(得分:0)
如果有其他人遇到这类问题,只是为了让你知道这与使用php绑定的非匹配zmq版本有关。虽然很多zmq工作正在运行,但actionscript zmq脚本没有正确响应。奇怪的是,phpinfo()表明我确实使用的是zmq 3.2.2但是" php -i"透露它是3.2.0。我不知道是否有必要将libzmq.dll和php_zmq.dll放在System32中,但我有,而且我认为在我摆弄所有东西的过程中,我的dll混杂了起来。删除所有内容后,只使用此处的dll:
https://github.com/mkoppanen/php-zmq/issues/79
我能够解决这个问题。我希望这有助于其他人!