2013-01-08 20 views
6

Ho uno script PHP che è stato eseguito come un cron job. Lo script usa il DB per vedere se ha qualcosa da fare e per assicurarsi che i suoi fratelli non siano già in esecuzione.come demonizzare uno script php da eseguire con upstart

Mi piacerebbe eseguire lo script PHP come un demone con upstart.

ho creato il mio file /etc/init/super-mailer.conf come questo:

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 

I eseguire sudo start super-mailer e funziona una volta.

Tuttavia, non funziona di nuovo. Perchè no?

Ho anche provato a sostituire la linea exec sudo con

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

Devo cambiare il mio script PHP per ciclo? Come posso dire a upstart di continuare ad avviare lo script?

+0

Hai implementato il demone nello script? In caso contrario, verrà eseguito solo una volta. –

risposta

5

Un daemon è un tipo di programma che non si ferma finché non viene indicato. Tuttavia, lo script termina da solo. Quindi sì, è necessario creare un ciclo nel tuo script, che lo eseguirà di nuovo ogni volta.

Tuttavia, tieni presente che solo eseguendo un ciclo ed eseguendo lo script più e più volte, è possibile che venga consumato un numero elevato di cicli della CPU. Quindi, potresti considerare di chiamare una funzione come usleep in ogni iterazione per rendere il demone un po 'meno consumante della CPU. Quindi, ad esempio, lasci che lo script venga eseguito ogni 2 secondi.

Problemi correlati