我正在設置一個cron作業,每分鐘執行一次腳本page.php 我想了解併發性。 它自己需要15分鐘才能完成的腳本,那麼cron將如何運行?在cron中處理併發性php
Lets take a time frame of 15 minutes, how many crons will run in that time? 1 or 15?
will cron runs till its completion or it can be interrupted?
Thanks.
我正在設置一個cron作業,每分鐘執行一次腳本page.php 我想了解併發性。 它自己需要15分鐘才能完成的腳本,那麼cron將如何運行?在cron中處理併發性php
Lets take a time frame of 15 minutes, how many crons will run in that time? 1 or 15?
will cron runs till its completion or it can be interrupted?
Thanks.
當你通過cron啓動一個php腳本時,它會一直運行,直到它完成或超過執行時間。 無論最後一個腳本是否仍在運行,系統將始終啓動腳本的新實例。
如果您知道腳本運行很長時間,您應該設置一個bash腳本來檢查腳本是否已經運行,並且只有在不是這種情況時才啓動php腳本。
Cron不會爲您處理併發 - 您的腳本必須這樣做。
原來,這很容易,因爲有一個微不足道的PHP操作,那就是原子:unlink()
。
我們傾向於使用這種方式:
unlink()
如果不suceed(結果評估爲假),它退出(這可以確保,只有一個實例[R同時UNS)unlink()
touch()
上課全局標誌,文件和退出(這可以確保,一個cron運行開始至多一個實例)touch()
上課全局標誌文件重新啓動的週期這樣,cron的運行,這將導致併發性,被排除在外以可記錄的方式。
它取決於您的計劃任務/ cron設置。您可以配置啓動15次PHP腳本,或者在完成上一個作業時啓動它。
您的計劃任務/ cron可以由它自己中斷,通過外部信號或通過您在計劃任務/ cron中所做的配置(如果在N分鐘內未完成,則停止作業...)
希望對您有所幫助:)
這不是我的問題 – Badddy 2014-11-08 15:59:02
你可能會考慮編輯你的問題來解釋它好一點 - 也許我不是唯一一個誤解它? – 2014-11-08 20:47:15