Как демонизировать скрипт php для запуска с upstart
У меня есть скрипт PHP, который выполнялся как задание cron. Сценарий использует базу данных, чтобы узнать, есть ли у нее что-либо, и убедиться, что ее братья еще не запущены.
Я хотел бы запустить скрипт PHP как демон с upstart.
Я настроил свой /etc/init/super-mailer.conf
файл как это:
description "super mailer"
author "Rob Nugen"
start on startup
stop on shutdown
respawn
exec sudo -u www-data php -f /var/www/super-mailer/scripts/mailer.php
Я исполняю sudo start super-mailer
и это работает один раз.
Это не бежит снова, все же. Почему бы и нет?
Я также пытался заменить exec sudo
линия с
script
sudo -u www-data php -f /var/www/clubberia-mailer/scripts/mailer.php
end script
Нужно ли менять свой PHP-скрипт на цикл? Как мне сказать выскочке продолжать запускать скрипт?
1 ответ
Демон - это тип программы, который не останавливается до тех пор, пока не будет сказано об этом. Тем не менее, ваш сценарий завершает себя. Так что да, вам нужно сделать цикл в вашем скрипте, который будет запускать его каждый раз.
Однако имейте в виду, что простое выполнение цикла и выполнение сценария снова и снова может привести к тому, что он будет потреблять много циклов ЦП. Таким образом, вы можете рассмотреть возможность вызова функции, подобной usleep, на каждой итерации, чтобы уменьшить нагрузку на процессор. Так, например, вы позволяете вашему скрипту запускаться каждые 2 секунды.