2013-01-08 25 views
6

Mam skrypt PHP, który działa jako zadanie cron. Skrypt używa DB, aby sprawdzić, czy ma coś do zrobienia, i upewnić się, że jego bracia jeszcze nie działają.jak daemonizować skrypt php, który będzie działał z dodatkiem

Chciałbym uruchomić skrypt PHP jako demon z upstart.

Wcześniej skonfigurować mój plik /etc/init/super-mailer.conf jak to:

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 

wykonam sudo start super-mailer i działa natychmiast.

To nie działa jeszcze raz. Dlaczego nie?

Próbowałem zostały również zastąpienie linii exec sudo z

script 
    sudo -u www-data php -f /var/www/clubberia-mailer/scripts/mailer.php 
end script 

Czy muszę zmienić mój skrypt PHP do pętli? Jak mogę powiedzieć, że staram się dalej uruchamiać skrypt?

+0

Czy zaimplementowałeś demonowanie w swoim skrypcie? Jeśli nie, to będzie działać tylko raz. –

Odpowiedz

5

Demon jest rodzajem programu, który nie zatrzymuje się, dopóki nie zostanie powiadomiony. Jednak twój skrypt się kończy. Więc tak, musisz zrobić pętlę w swoim skrypcie, która będzie ją ponownie uruchamiać za każdym razem.

Należy jednak pamiętać, że samo wykonywanie pętli i wykonywanie skryptu wielokrotnie może spowodować zużycie wielu cykli procesora. Tak więc możesz rozważyć wywołanie funkcji takiej jak usleep w każdej iteracji, aby uczynić demona nieco mniej wymagającym procesora. Na przykład pozwalasz uruchomić skrypt co 2 sekundy.