這篇文章主要介紹如何使PHP定時執行任務,有一定的參考價值,有興趣的朋友可以看看,希望對你有幫助!
使用PHP定時執行某些任務的話, 可以有以下兩個方法:
1. linux下crontab, windows下規劃任務
2. 用php的相關函數
<span style="font-size: 14px;">set_time_limit(0);<br>ignore_user_abort(true);<br>//这里写一个死循环<br></span>
第一個方法是最常見的, 如果php伺服器上沒有權限去crontab, 也可以找一個自己的機器定期crontab去請求伺服器
第二種比較不靠譜, Apache重啟了就得重新訪問, fastcgi倒是會好一點。
範例:建立index.php和test.txt,功能是往test.txt裡每秒覆蓋寫一個數字,該數字遞增。 index.php程式碼如下:
<span style="font-size: 14px;"><?php<br>ignore_user_abort(true);<br>$num=0;<br>set_time_limit(0);<br>//ini_set('max_execution_time',0); 用这句也行,效果和set_time_limit(0)一样<br>do{<br> file_put_contents('./test.txt',$num);<br> $num++;<br> sleep(1);<br>}while(true);<br></span>
關閉瀏覽器後,發現仍能執行腳本,該數字依舊遞增。
原因是這關鍵的兩個函數在起作用:
ignore_user_abort(true)無論客戶端是否關閉瀏覽器,下面的代碼都將得到執行。
set_time_limit(0) 取消php檔案的執行時間,如果沒有這個函數的話,預設php的執行時間是30秒,也就是說30秒後,這個檔案就say goodbay了。
如果不用這兩個函數,則需要修改php.ini,找到max_execution_time配置項,將30改為0,設定為0就是永不過期。再重啟伺服器即可。
更多相關教學請上 php程式設計從入門到精通全套影片教學