首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP % 0mq接收器未接收消息

PHP % 0mq接收器未接收消息
EN

Stack Overflow用户
提问于 2015-06-24 14:51:06
回答 1查看 121关注 0票数 1

我已经用PHP实现了0mq呼吸器/工人/水槽的例子。呼吸机向工人发送信息。工作进程接收这些消息并将结果发送到接收器。

工作进程正确地接收到消息,但接收器从未接收到它们的响应。我做错了什么?

在Virtualbox VM中使用PHP 5.5.9-1ubuntu4.9和libzmq v2.2.0。

呼吸机:

代码语言:javascript
复制
$context = new ZMQContext();
$sender = new ZMQSocket($context, ZMQ::SOCKET_PUSH);
$sender->bind('tcp://*:5557');
echo 'Sending IDs to workers...', PHP_EOL;
for ($i = 0; $i < 100; $i ++) {
    $sender->send($i);
}

工人:

代码语言:javascript
复制
$context = new ZMQContext();
$receiver = new ZMQSocket($context, ZMQ::SOCKET_PULL);
$receiver->connect('tcp://localhost:5557');
$sender = new ZMQSocket($context, ZMQ::SOCKET_PUSH);
$sender->connect('tcp://localhost:5558');
while (true) {
    $i = $receiver->recv();
    echo 'Processing ', $i, PHP_EOL;
    $sender->send($i * 2);
}

接收器:

代码语言:javascript
复制
$context = new ZMQContext();
$receiver = new ZMQSocket($context, ZMQ::SOCKET_PULL);
$receiver->connect('tcp://*:5558');
echo 'Receiving rows from workers...', PHP_EOL;
while (true) {
    $result = $receiver->recv();
    echo $result, PHP_EOL;
}

结果:

工作人员说“正在处理0-99...”但是接收器没有显示输出。

期望值:

接收器输出0、2、4、6、8等。

EN

回答 1

Stack Overflow用户

发布于 2015-06-24 15:06:42

愚蠢的错误。接收器应该使用bind()而不是connect()。已解决。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31019593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档