Назад | Перейти на главную страницу

Способы управления пулом скриптов

У меня есть 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