2
我正在開發一個系統,該前端包含基於CakePHP框架和基於Java的後端的前端。這兩個生態系統之間的通信是通過從CakePHP控制器向RabbitMQ代理髮送JSON消息來完成的。當消息被使用時,結果將被髮送回前端。 現在,我需要消費該消息並將控制器的結果推送到用戶瀏覽器。對於PHP的一部分,我用phpamqplib,但它需要有新郵件時聽一個無限循環:將結果從RabbitMQ隊列推送到CakePHP前端
$channel->basic_consume('AMQP.COMMAND.OUTPUT.QUEUE',
'consumer',
false,
false,
false,
false,
array($this, 'processMessage'));
function shutdown($ch, $conn){
$ch->close();
$conn->close();
}
register_shutdown_function('shutdown', $channel, $conn);
while (count($channel->callbacks)) {
$read = array($conn->getSocket()); // add here other sockets that you need to attend
$write = null;
$except = null;
if (false === ($num_changed_streams = stream_select($read, $write, $except, 60))) {
/* Error handling */
} elseif ($num_changed_streams > 0) {
$channel->wait();
}
}
在我的控制器,這是發人深省的Apache服務器拋出一個錯誤,因爲30秒的最長執行已超過。 我真的需要幫助。聽取新消息並將結果推送到視圖中的最佳解決方案是什麼?
謝謝
乾杯。