【问题标题】:React warning "stream_select(): cannot represent a stream of type ZMQ_FD as a select()able descriptor"反应警告“stream_select():不能将 ZMQ_FD 类型的流表示为 select()able 描述符”
【发布时间】:2015-03-16 17:26:36
【问题描述】:

我是第一次尝试使用 Ratchet,我正在关注 the push tutorial

我在push-server.php中有以下代码:

namespace app\ratchet;
require_once(__DIR__ . '/../common_functions.php'); // my autoloader
require __DIR__ . '/../../vendor/autoload.php'; // composer autoloader

use app\ratchet\Pusher;

use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;

$loop   = \React\EventLoop\Factory::create();
$pusher = new Pusher;

// Listen for the web server to make a ZeroMQ push after an ajax request
$context = new \React\ZMQ\Context($loop);
$pull = $context->getSocket(\ZMQ::SOCKET_PULL);
$pull->bind('tcp://127.0.0.1:8184'); // Binding to 127.0.0.1 means the only client that can connect is itself
$pull->on('message', array($pusher, 'onBlogEntry'));

// Set up our WebSocket server for clients wanting real-time updates
$webSock = new \React\Socket\Server($loop);
$webSock->listen(8185, '0.0.0.0'); // Binding to 0.0.0.0 means remotes can connect
$webServer = new \Ratchet\Server\IoServer(
    new \Ratchet\Http\HttpServer(
        new \Ratchet\WebSocket\WsServer(
            new \Ratchet\Wamp\WampServer(
                $pusher
            )
        )
    ),
    $webSock
);

$loop->run();

当我运行该文件时,我收到以下警告

Warning: stream_select(): cannot represent a stream of type ZMQ_FD as a select()able descriptor in [...]\vendor\react\event-loop\StreamSelectLoop.php on line 255

Call Stack:
    0.0000     237608   1. {main}() [...]\app\ratchet\push-server.php:0
    0.0130    1400696   2. React\EventLoop\StreamSelectLoop->run() [...]\app\ratchet\push-server.php:36
    0.0130    1401688   3. React\EventLoop\StreamSelectLoop->waitForStreamActivity() [...]\vendor\react\event-loop\StreamSelectLoop.php:201
    0.0130    1402240   4. React\EventLoop\StreamSelectLoop->streamSelect() [...]\vendor\react\event-loop\StreamSelectLoop.php:221
    0.0130    1402384   5. stream_select() [...]\vendor\react\event-loop\StreamSelectLoop.php:255

\vendor\react\event-loop\StreamSelectLook.php 中引用的行是:

return stream_select($read, $write, $except, $timeout === null ? null : 0, $timeout);

我以前从未使用过 Ratchet 或 ZeroMQ,并且正在努力理解问题所在。搜索此内容时,我在 Google 上找不到任何有用的内容。

我在 Windows 7 x 64 上运行 WampServer x 64。我关注this guide 了解如何安装 ZMQ。

以下是一些调试截图:

是什么导致了这个问题,我该如何解决?

【问题讨论】:

  • 你安装了两个 ZMQ 包吗?如果我没记错的话,我必须安装 ZMQ for Windowsphp_zmq 扩展。
  • @LorenzMeyer 我按照以下说明安装 ZMQ:superuser.com/a/774973/126872
  • 该答案仅与 php 扩展 dll 有关。还有用于安装 Windows 的 ZMQ 包,你可以在这里找到:zeromq.org/distro:microsoft-windows
  • 我不确定这是不是问题所在。如果是,我会写它作为答案。无论如何,对我来说 ZMQ 和 Ratchet 就像一个魅力。它现在在我们的生产环境中运行了几个月,没有任何问题。
  • @LorenzMeyer 实际上我确实安装了那个。我不确定我是否应该这样做,但我确实安装了它。

标签: php zeromq ratchet reactphp


【解决方案1】:

在尝试找出解决此问题的方法大约五个小时后,我尝试根据我在某处阅读的评论安装 32 位版本的 WampServer,问题已得到解决。所以看来 stream_select() 问题是由 WampServer 的问题引起的。

我将把这个问题留在这里,因为我确信有人会在某个时候遇到同样的问题,希望这会为他们节省很多时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    相关资源
    最近更新 更多