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();
}
}
이 오류가 발생하는 아파치 서버를 자극되어 있기 때문에 30 초 최대 실행 초과되었습니다. 정말 도움이 필요합니다. 새로운 메시지를 듣고 그 결과를보기로 밀어 넣는 가장 좋은 해결책은 무엇입니까?
감사합니다.
건배.