6

cron ジョブとして実行されている PHP スクリプトがあります。スクリプトは DB を使用して、実行する必要があるかどうかを確認し、兄弟がまだ実行されていないことを確認します。

upstartで 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 スクリプトを変更する必要がありますか? upstart にスクリプトを開始し続けるように指示するにはどうすればよいですか?

4

1 に答える 1

5

デーモンは、指示されるまで停止しないタイプのプログラムです。ただし、スクリプトは自動的に終了します。はい、スクリプトにループを作成する必要があります。これにより、毎回再実行されます。

ただし、ループを作成してスクリプトを何度も実行すると、多くの CPU サイクルが消費される可能性があることに注意してください。そのため、反復ごとにusleepのような関数を呼び出して、デーモンの CPU 消費を少し減らすことを検討してください。たとえば、スクリプトを 2 秒ごとに実行させます。

于 2013-01-08T09:19:42.850 に答える