Справочная информация: Наша текущая система включает в себя две службы (одну написанную на Java, другую на PHP), которые взаимодействуют друг с другом с помощью HTTP-обратных вызовов. Мы хотим перейти от HTTP-обратных вызовов к архитектуре на основе сообщений, используя ActiveMQ (или, если необходимо, другую). Мы, вероятно, будем использовать STOMP для связи между ними. В конце концов, PHP-сервис будет переписан на Java, но это не является частью этого проекта.Запуск PHP из ActiveMQ
Вопрос: Как система ActiveMQ может уведомить PHP о том, что новое сообщение было выложено в очередь, что система PHP подписался на? В текущей системе обратный вызов по своей сути вызывает PHP и запускает его. Это уходит с архитектурой на основе сообщений.
Возможные решения:
- Крон регулярно называет PHP скрипт, который проверяет наличие новых сообщений. Тьфу.
- Долгосрочный PHP-процесс, который зацикливается и спит и проверяет наличие новых сообщений. меньше yuck?
- ActiveMQ вызывает скрипт PHP при отправке нового сообщения. хорошо, как?
- ??
Я должен был сделать это совсем недавно. Мы запустили скрипт PHP с кастетами (инициированный через CRON), который изначально говорил с приложением PHP и AMQ через STOMP. Каток-замок позволил нам перекрывать выполняемые процессы для хорошей защитной сетки без двуличности. Удачи. – allnightgrocery
@ Инкспик: Спасибо за идею. Можете ли вы уточнить, что вы подразумеваете под «скользящим замком»? Я получаю основное представление о том, что это такое, но я не могу найти ссылку на термин где-нибудь? –
Извините. Я не знаю, откуда этот термин. Мы используем его при обращении к заблокированному процессу PHP CRON, потому что они не запускаются как демоны и каждый последующий кадр выполнения в течение последнего, когда блокировка освобождается. Вот пример исполнения (http://stackoverflow.com/questions/1780823/php-loop-acting-as-cronjobensure-only-one-instance-running), выполненный с помощью стаи (http://php.net/manual /en/function.flock.php). – allnightgrocery