【问题标题】:PHP 0mq sink not receiving messagesPHP 0mq接收器未收到消息
【发布时间】:2015-06-24 15:06:41
【问题描述】:

我已经在 PHP 中实现了 0mq 呼吸机/工人/水槽示例。呼吸机向工人发送消息。工作人员接收这些消息并将结果发送到接收器。

worker 正确接收消息,但 sink 从未收到他们的响应。我做错了什么?

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

呼吸机:

$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);
}

工人:

$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);
}

水槽:

$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...”,但接收器没有显示输出。

预期:

Sink 输出 0、2、4、6、8 等

【问题讨论】:

    标签: php zeromq


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-09
      • 2016-01-24
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多