8

メッセージの送受信に php-amqplib を使用しようとしています。端末上で送受信を行います。しかし、Web ブラウザーにアクセスすると、キューから受信できず、メッセージを継続的に待機します。以下のコードを receive.php に使用しました

require_once(__DIR__ . '/lib/php-amqplib/amqp.inc');
include_once(__DIR__ . '/config/config.php');
$connection = new AMQPConnection(HOST, PORT, USER, PASS, VHOST);
$channel = $connection->channel();
$channel->queue_declare('test22');    
$callback = function($msg){
echo $msg->body;
};    
$channel->basic_consume('test22', 'consumer_tag', false, true, false, false, $callback);

while(count($channel->callbacks)) {
$channel->wait();
}    
$channel->close();
$connection->close();

コールバック関数の代わりに以下を使用すると、キューから最初のメッセージを取得しますが、キューからは消費しません

$abc=$channel->basic_get("test22", false, 2);    
if(!empty($abc))
{
print_r($abc->body);
} 

これは、キュー「test22」でメッセージが利用可能であることを意味します。手がかりを教えてください。

4

1 に答える 1

2

(または使用している他のログイン システム)に変更echo $msg->body; します。error_log($msg->body);おそらくログにメッセージが表示されると思います。Web ブラウザーでは、ページは既に読み込まれているため、スクリプトがメッセージを受信して​​も変更されません。

于 2015-01-16T19:31:01.840 に答える