Я думаю, что проблема, которую они пытаются решить, состоит в том, что стек LAMP (частью которого является PHP) неотъемлемо связан с механизмом запроса / ответа, который на него навязывает протокол HTTP, поэтому у него есть Потребитель (который проверяет ActiveMQ) очередь, написанная на PHP, работоспособна, но время жизни процессов естественно ограничено любым таймаутом в протоколе HTTP. решение является одним из:
1 - Не запускайте подписчик PHP внутри apache / HTTP, и в результате вы можете выполнить set_time_limit (0), и подписчик php будет работать вечно (до тех пор, пока он не выйдет из строя), ИЛИ
2 - Поймите, что подписчик действительно выполняет "периодические" проверки, с большим количеством промежуточных элементов, поэтому вместо while (1) {do_queue_stuff (); спать(); } вы удаляете сон, удаляете цикл while и вызываете его повторно из Cron или подобного.
У каждого есть свои преимущества, но оба одинаково хороши, ЕСЛИ частота cron () достаточно настраиваема. Мой Cron ограничен бегом каждую минуту, что не очень часто, поэтому мне придется сделать комбинацию из двух выше:
звонить из cron каждую минуту:
time = what_minute_is_it ();
while (what_minute_is_it () == время) {
do_queue_stuff ();
сон (1);
}
Я думаю, что люди могут искать то, как система ActiveMQ «намекнет» на систему PHP Consumer, что в очереди может быть что-то, что требует обработки, и, как следствие, экономит на всех этих началах обработки очереди / остановка / сон / и прочее, если на самом деле ничего не поделаешь. Похоже, верблюд - способ сделать это.