5

ZeroMQパブリッシャー/サブスクライバーを使用して、Webアプリケーションから複数のサーバーにデータをディスパッチしたいと思います。

WebアプリにApacheとPHPを使用していますが、phpスクリプトは次のように機能します。

//Initialization
$context = new ZMQContext();
$publisher = $context->getSocket(ZMQ::SOCKET_PUB);
$publisher->bind("tcp://*:5556");

//Then publishing for testing:

$publisher->send("test");
$publisher->send("test");
$publisher->send("test");
$publisher->send("test");
$publisher->send("test");

テストのために、Pythonのドキュメントからサブスクライバーを適合させました。

import sys
import zmq

#  Socket to talk to server
context = zmq.Context()
socket = context.socket(zmq.SUB)

socket.connect ("tcp://localhost:5556")

# Subscribe to zipcode, default is NYC, 10001
socket.setsockopt(zmq.SUBSCRIBE, "")

print "Waiting..."
# Process 5 updates
for update_nbr in range (5):
    string = socket.recv()
    print string

コマンドラインからphpスクリプトを実行するとすべてが機能しますが、Apacheでは機能しません(スクリプトがWebブラウザーで実行される場合)。

Apache構成を機能させるために、Apache構成に対して何かすべきことはありますか?

ありがとう

アレクサンドル

4

1 に答える 1

2

唯一の問題は、接続を確立する時間がなかったということだったようです。

バインド後、送信前にパブリッシャーにスリープを追加すると、非常にエレガントではありませんが、問題は解決しました。

この問題はここで説明されています:

http://zguide.zeromq.org/page:all#Getting-the-Message-Out

于 2012-08-31T13:19:20.697 に答える