RabbitMQ を使用しており、コンシューマー内で xdebug を使用したいと考えています。AMQPQueue
キューでメッセージをリッスンするために使用しています。xdebug は まで使用できますAMQPQueue::consume()
が、一度consume()
呼び出されるとブレークポイントを取得できません。どんな助けでも素晴らしいでしょう。
質問する
439 次
1 に答える
1
AMQPQueue::consume(callable $callback = null, $flags = AMQP_NOPARAM, $consumerTag = null)
C で実装され ( amqp_queue.c:816 )、新しいメッセージがチャネルに表示されると ( amqp_queue.c:908 ) (AMQP に関して) コールバック関数を呼び出します$callback
( amqp_queue.c:963 )。コールバック関数内にブレークポイントを設定すると、そのコールバックが呼び出されるときに xdebug が停止します。
ボンネットの下には、ソケットの読み取りをブロックする無限ループがあり、チャネル上のすべてを読み取り、メッセージの場合はコールバックに渡します。そのループは、何らかの例外が発生した場合 (コールバックを含む) およびブール値false
が返された場合にのみ中断します。
チャネルにメッセージがない場合、consume()
関数が実行され、メインの PHP 実行スレッドがブロックされるため、アプリケーションがハングしているように見える場合があります。
于 2015-09-15T15:37:08.747 に答える