我有一个简单的 PHP 代码,可以将消息发送到 RabbitMQ 队列,当我直接从控制台(#php script.php)执行它时,消息会正确发布,但是当我尝试使用浏览器打开相同的脚本时(http ://localhost/script.php)消息未发送。所有先前的行都已执行,但页面卡在行中
$connection = new AMQPConnection('$ipaddress', 5672, '$user', '$password');
关于为什么会发生这种情况的任何想法?
代码:script.php
<?php
include_once('rabbitmq_function.php');
$result = rabbitmq_send("test");
print_r($result);
代码:rabbitmq_function.php
<?php
require_once '/usr/share/php/PhpAmqpLib/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Connection\AMQPConnection;
use PhpAmqpLib\Message\AMQPMessage;
function rabbitmq_send($data)
{
print_r("Before AMQP Connection");
$connection = new AMQPConnection('10.0.0.8', 5672, 'guest', 'guest');
print_r("After AMQP Connection");
$channel = $connection->channel();
$channel->queue_declare('task_queue', false, true, false, false);
$msg = new AMQPMessage(
$data,
array('delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT)
);
$channel->basic_publish($msg, '', 'task_queue');
$channel->close();
$connection->close();
return true;
}
从 CLI:我得到两条调试消息(之前和之后),以及返回“1”值。而且我在 RabbitMQ 管理中看到了一条新消息。从浏览器:我只打印了“在 AMQP 连接之前”消息,队列中没有新消息