как демонизировать php-скрипт для запуска с помощью upstart


У меня есть PHP-скрипт, который выполняется как задание cron. Сценарий использует базу данных, чтобы узнать, есть ли у нее какие-либо дела, и убедиться, что ее собратья еще не запущены.

Я хотел бы запустить PHP-скрипт как демон с выскочкой.

Я настроил свой файл /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-скрипт на цикл? Как мне сказать выскочке, чтобы он продолжал запускать скрипт?

Author: Thunder Rabbit, 2013-01-08

1 answers

Демон - это тип программы, которая не останавливается, пока ей об этом не скажут. Однако ваш сценарий завершается сам собой. Так что да, вам нужно сделать цикл в своем скрипте, который будет перезапускать его каждый раз.

Однако имейте в виду, что простое выполнение цикла и выполнение вашего сценария снова и снова может привести к тому, что он будет потреблять много циклов процессора. Таким образом, вы можете рассмотреть возможность вызова функции, такой как usleep, на каждой итерации, чтобы сделать deamon немного менее трудоемким. Так, например, вы позволяете своему скрипт запускается каждые 2 секунды.

 5
Author: kokx, 2013-01-08 09:19:42