0

この質問は非常に具体的なので、誰も私を助けることができないのではないかと心配しています... Mac での開発から PC に切り替え、私のプロジェクトとは別に、ローカル マシン (XAMPP を使用) ですべてのプロジェクトを実行しています。 ZMQ ソケット。

メッセージをプル ソケットにプッシュすると、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

他の誰かがこの種の問題を抱えている場合に備えて、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

問題を解決できました。これが他の人に役立つことを願っています!

于 2013-04-15T19:53:21.097 に答える