我有一個每5分鐘運行一次cron的PHP腳本。每5分鐘執行一次PHP cron,但在15分鐘後放入一個函數進入休眠狀態
*/5 * * * * /var/www/html/processMail.php
腳本里面有,我想執行每15分鐘一個功能,這樣的功能將處於睡眠模式,但腳本的其餘部分將每5分鐘的過程。
這個瘋狂的想法會工作嗎?
我有一個每5分鐘運行一次cron的PHP腳本。每5分鐘執行一次PHP cron,但在15分鐘後放入一個函數進入休眠狀態
*/5 * * * * /var/www/html/processMail.php
腳本里面有,我想執行每15分鐘一個功能,這樣的功能將處於睡眠模式,但腳本的其餘部分將每5分鐘的過程。
這個瘋狂的想法會工作嗎?
這個瘋狂的想法會工作嗎?
不,它不會。每15分鐘的功能 - 即使你設法等待15分鐘 - 每5分鐘執行一次 - 所以有效的15分鐘功能每5分鐘執行一次。代替創建每15分鐘執行的第二腳本或添加一個參數:
*/5 * * * * /var/www/html/processMail.php --mins=5
*/15 * * * * /var/www/html/processMail.php --mins=15
然後使用功能解析commandline-parameters in PHP(和getopt
),以進行相應的處理。另請參閱the section about commandline usage in the PHP manual。
感謝澄清,這個想法不會工作,但創建第二個腳本執行每15分鐘。 – 2012-04-24 07:24:14
您可以將迭代器保存在文件或數據庫中,並在每次運行後增加它,這樣,只能在運行腳本的3次時運行一次。
但是,更好的解決方案是簡單地編寫另一個腳本並每15分鐘運行一次。
這聽起來像對我來說是一個黑客?你能解釋一下你試圖解決的實際問題,而不是你提出的解決方案嗎?我首先想到的是,這可能會更好地分爲5分鐘和15分鐘。 – Nanne 2012-04-24 06:57:50
嗨,Nanne。感謝您的建議。我認爲應該有一個簡單的方法來使一個功能睡眠並運行一個特定的時間,而不是設置一個新的cron。 – 2012-04-24 07:57:07
但這個問題沒有道理,因爲它是:)。如果您每5分鐘啓動一個腳本,啓動一個應該每15分鐘運行一次的函數,您很快就會收到很多電話!或者你的意思是你想每5分鐘運行一次腳本,但是3次跳過某個函數2次? (所以不是5日和10日,而是15日,然後不是20日和25日,而是30日)?因爲那不是「睡眠」,那只是檢查它是否應該運行。這是可行的 – Nanne 2012-04-24 08:02:12