4

RabbitMQ キューから (PECL AMQP モジュールを使用して) 消費し、実際の作業を行うために分岐する PHP スクリプトを探しています。

私はコードを持っています@ https://gist.github.com/giggsey/6666e67bb0e090eeb5f0

しかし、実行すると、次のようになります。

11296 キー: USER.12392 ObjectLength: 74 2013 年 3 月 19 日にフォークされた 11296

14:16:22 11277 ack() PHP 致命的なエラー: キャッチされていない例外

tmp/forking.php:10 に「ピアによって接続がリセットされました」というメッセージが表示される「AMQPConnectionException」

スタックトレース:

0 tmp/forking.php(10): AMQPQueue->consume(配列)

1 tmp/forking.php(102): test->run()

2 {main} が tmp/forking.php の 10 行目でスローされる

致命的なエラー: 10 行目の tmp/forking.php のメッセージ「接続がピアによってリセットされました」を伴うキャッチされない例外「AMQPConnectionException」

AMQPConnectionException: 10 行目の tmp/forking.php のピアによって接続がリセットされました

コール スタック:

0.0006     665008   1. {main}() tmp/forking.php:0

0.0007     665456   2. test->run() tmp/forking.php:102

0.0359     670504   3. AMQPQueue->consume() tmp/forking.php:10
4

1 に答える 1

5

接続が確立された後にフォークします。つまり、子が接続を継承しているため、親とすべての子が同じ接続を使用することになり、いずれかの子が終了する (自動的に接続を閉じる) または接続を閉じると、親はそして、すべての兄弟が突然、つながりがなくなったことに気づきます。

したがって、使用する代わりに:

$connection->connect();

あまり文書化されていないものを使用してください:

$connection->pconnect();

これにより、フォークされた子が接続を閉じると、親が自動的に接続を再開するなど、永続的な接続が提供されます。

于 2013-03-27T15:39:57.190 に答える