0

这个问题太具体了,恐怕没人能帮助我......我已经从在 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() 时,它似乎已正确加载,并且它与服务器上的版本相同(有效)。我错过了什么基本的东西吗?

4

1 回答 1

1

万一其他人遇到这类问题,只是为了让您知道这是与不匹配的 zmq 版本与 php 绑定有关。虽然很多 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

我能够解决这个问题。我希望这对其他人有帮助!

于 2013-04-15T19:53:21.097 回答