私は、Rabbit MQ サーバーに接続してメッセージを取得する PHP プログラムを持っています。この機能を関数内に配置しました。
function get_messages()
{
$connection = new AMQPConnection();
$connection->setLogin($rabbit_username);
$connection->setPassword($rabbit_passwd);
$connection->setHost($rabbit_host);
while (!$connection->connect())
{
echo "## Trying to connect to Rabbit MQ...\n";
sleep(1);
}
$amqpchn = new AMQPChannel($connection);
$mq = new AMQPQueue($amqpchn);
$mq->setName("myqueue");
$mq->setFlags(AMQP_DURABLE|AMQP_PASSIVE);
$mq->declare(); // must declare then bind
$mq->bind("my.exchange","my.routing");
// do stuff
}
これはうまくいきます。ただし、スレッド内 (1 つのスレッドのみ) から関数 get_messages() を実行しようとすると、コードは $connection->connect() でスタックします。Rabbit サーバーに接続できません。
なぜこれが起こるのですか?
前もって感謝します