2009-06-25 37 views
2

我有這個郵件腳本我必須運行幾次。 要啓動腳本,我將使用cron,但腳本必須再運行2次或3次以上(相隔一小時)。要使用睡眠()或cron作業

這樣做的最好方法是什麼? 要在一個小時或腳本末尾使用睡眠命令,請放置一些代碼,以便腳本創建一個新的cron作業以在一小時後自行運行它?

感謝

回答

7

除非在保持腳本在內存中運行時節省一些成本,否則根據需要,最好每隔一小時使用一次cron來調用它。

0 0-2 * * * /usr/local/bin/mail-script.php 

您可以使用多個選擇時間 - 語法,或逗號語法:

0 0,1,2,3 * * * /usr/local/bin/mail-script.php 

如果需要保持某種形式的國家中,使用臨時文件,以保持保存的狀態。

做:

> man 5 crontab 

要看看你的* nix處理上述情況。最後,除非你知道該腳本必須運行只有 2-3次,否則你最好在PHP腳本本身中放置是「運行還是不運行」的邏輯,然後運行它每小時。

0

我不知道這兩種方法(睡了一個小時,或者創建自PHP cron作業)是理想的,怎麼樣反正每小時運行一次,那麼你的PHP腳本檢查是否cron作業應該運行?

0

爲什麼不只是設置cron標準,讓它觸發那些特定的時間? Cron在這方面非常靈活。

更新你的問題,當你想讓它開火,我可以舉一個例子。

2

使用sleep()的一個優點是它可以更便攜。例如,在我使用的許多系統上,用戶不允許擁有自己的cron作業 - 因此編寫程序來照顧自己的計時器可能是一個優勢。

的替代睡覺()可能會使用SIGALRM(使你的腳本捕獲中斷,並在一定的時間間隔執行代碼 - 當中斷被拋出)

我的意思是,我推薦使用的cron - 但這裏有一些替代品!