我們知道Linux下PHP可以很方便的實現計劃任務,而Windows平台上PHP計劃任務的實現比較複雜,PHP計劃任務的實現在PHP WEB開發中是非常有用的,比如可以實現定時MysqlDatabase Backup、更新緩衝、資料擷取、定時產生靜態頁面等任務。而PHP ignore_user_abort函數可以實現當用戶端中斷(比如關閉遊覽器)後仍然繼續執行任務的功能。下面來看一段通過PHP ignore_user_abort函數實現PHP計劃任務的執行個體代碼。
PHP計劃任務執行個體代碼
PHP Code 複製內容到剪貼簿
PHP計劃任務執行個體說明:在上述代碼中主要功能是每隔15秒自動通過PHP檔案寫入操作在檔案中寫入一段文字,當使用者關閉遊覽器後仍然繼續執行。
第2行:首先執行php ignore_user_abort函數,告知系統忽略使用者放棄行為繼續執行,PHP預設情況是當遠程用戶端串連中斷時指令碼會退出。通過php ignore_user_abort 函數來控制是否忽略使用者中斷行為繼續執行PHP代碼。
知識點:ignore_user_abort(setting) setting 可選。如果設定為 true,則忽略與使用者的斷開,如果設定為 false,會導致指令碼停止運行。如果未設定該參數,會返回當前的設定。
第3行:不限制PHP的指令碼已耗用時間。我們知道預設PHP指令碼運行都是有時間限制的,一般通過PHP.INI設定檔中的max_execution_time選項設定。通過PHP set_time_limit函數可以更改具體時間,設為0則代表不限制時間。
第4行:設定具體間隔時間,以秒為單位。
第5-21行:主要是不間斷地以間隔時間為單位執行一次PHP檔案寫入操作。
PHP計劃任務注意事項說明:在遊覽器中執行這段PHP代碼後,除非中斷WEB伺服器或者關閉系統,否則後台將一直以設定的間隔時間執行這段代碼。
至此,通過PHP ignore_user_abort函數實現PHP計劃任務功能的執行個體教程就介紹完了,通過瞭解這個執行個體的實現原理,你就可以知道很多PHP部落格中的定時Database Backup、定時產生靜態頁面等功能是如何?的。
使用ignore_user_abort()實現php檔案能夠在瀏覽器關掉之後照樣運行。
當然,要想使程式一直執行,還必須加上set_time_limit(0);
Linux 下有種更簡單的方法,就是crontab命令
crontab命令的功能是在一定的時間間隔調度一些命令的執行。
crontab 使用方法: crontab [ -e | -l | -r ] 檔案名稱 -e:編輯任務 -l:顯示任務資訊 -r:刪除定時執行任務資訊
crontab的格式:
* * * * * Command
分 時 日 月 星期 要啟動並執行命令
crontab的例子:
*/5 * * * * lynx http://www.php100.com
每5分鐘訪問一次 www.php100.com
0 8 * * * lynx http://www.php100.com
每天早上8點訪問 www.php100.com
0 10 6 * 1-5 lynx http://www.php100.com
每個月的6號和每個禮拜的星期一到星期五的早上10點訪問 www.php100.com
0 5 7 8 * lynx http://www.php100.com
8月7日早上5點訪問 www.php100.com
上面幾個特殊的意思:
"*"代表所有的取值範圍內的數字,"/"代表每的意思,"*/5"表示每5個單位,"-"代表從某個數字到某個數字,","分開幾個離散的數字。