У меня есть PHP-скрипт, который ждет сообщений AMQP. Когда приходит сообщение, оно обрабатывается, а после завершения обработки ожидает следующего сообщения.
Проблема конечно в том, что это блокировка. Если, например, входящее сообщение требует, чтобы я связался с внешним REST API, обработка может занять несколько секунд, и все это время он не сможет обрабатывать другие сообщения.
Я могу запустить свой скрипт несколько раз, например 8 раз. Таким образом, у меня есть 8 «потребителей», и это, кажется, работает очень хорошо. Однако теперь проблема в том, как мне управлять этими 8 различными процессами?
Я в основном ищу какую-то утилиту, которая позволяет мне указать, что я хочу запустить конкретный сценарий 8 раз, а затем иметь возможность отслеживать эти процессы в течение времени и т. Д. Есть ли такая утилита?
Используйте выскочку.
Отредактируйте /etc/init/whateveryouwant.conf
start on runlevel [2345]
task
env CONSUMERS=8
script
for i in `seq 1 $CONSUMERS`
do
start /fullpath/to/your/script/here CONSUMER=$i
done
end script
respawn limit 15 5
Тогда вы можете использовать service whateveryouwant start
service whateveryouwant stop