PHP定時(shí)執(zhí)行任務(wù)的3種方法詳解
PHP定時(shí)執(zhí)行的三種方式實(shí)現(xiàn)
- 1、windows 的計(jì)劃任務(wù)
- 2、linux的腳本程序
- 3、讓web瀏覽器定時(shí)刷新
具體實(shí)現(xiàn)
1、windows計(jì)劃任務(wù)
PHP很少在win服務(wù)器上跑,具體實(shí)現(xiàn)也不再深究,看網(wǎng)上實(shí)現(xiàn)的原理大概是寫bat腳本,然后讓window任務(wù)添加執(zhí)行這個(gè)bat腳本。
2、linux 的腳本實(shí)現(xiàn)
這里主要使用到crontab這個(gè)命令,
使用方式 :
說(shuō)明 :
crontab是用來(lái)讓使用者在固定時(shí)間或固定間隔執(zhí)行程式之用
使用crontab寫shell腳本,然后讓PHP調(diào)用shell,這個(gè)是利用linux的特性,應(yīng)該還不算PHP自身語(yǔ)言的特性
3、PHP實(shí)現(xiàn)定時(shí)執(zhí)行計(jì)劃任務(wù)
使用php讓瀏覽器刷新需要解決幾個(gè)問(wèn)題
PHP腳本執(zhí)行時(shí)間限制,默認(rèn)的是30m 解決辦法:set_time_limit();或者修改PHP.ini 設(shè)置max_execution_time時(shí)間(不推薦)
如果客戶端瀏覽器關(guān)閉,程序可能就被迫終止,解決辦法:ignore_user_abort即使關(guān)閉頁(yè)面依然正常執(zhí)行
如果程序一直執(zhí)行很有可能會(huì)消耗大量的資源,解決辦法使用sleep使用程序休眠一會(huì),然后在執(zhí)行
PHP定時(shí)執(zhí)行的代碼:
<?php ignore_user_abort();//關(guān)掉瀏覽器,PHP腳本也可以繼續(xù)執(zhí)行. set_time_limit(3000);// 通過(guò)set_time_limit(0)可以讓程序無(wú)限制的執(zhí)行下去 $interval=5;// 每隔5s運(yùn)行 //方法1--死循環(huán) do{ echo '測(cè)試'.time().'<br/>'; sleep($interval);// 等待5s }while(true); //方法2---sleep 定時(shí)執(zhí)行 require_once './curlClass.php';//引入文件 $curl = new httpCurl();//實(shí)例化 $stime = $curl->getmicrotime(); for($i=0;$i<=10;$i++){ echo '測(cè)試'.time().'<br/>'; sleep($interval);// 等待5s } ob_flush(); flush(); $etime = $curl->getmicrotime(); echo '<hr>'; echo round(($etime-stime),4);//程序執(zhí)行時(shí)間
測(cè)試的時(shí)候發(fā)現(xiàn)這個(gè)效率并不是很高。
總結(jié):
個(gè)人感覺(jué)PHP定時(shí)執(zhí)行任務(wù)的效率不是很高,建議關(guān)于定時(shí)執(zhí)行任務(wù)的工作還是交給shell來(lái)做吧。
以上就是PHP定時(shí)執(zhí)行任務(wù)的3種方法,對(duì)于前一篇文章結(jié)尾中提到的crontab這個(gè)命令,也進(jìn)行了簡(jiǎn)單介紹,希望大家能夠有所收獲。
相關(guān)文章
php插入含有特殊符號(hào)數(shù)據(jù)的處理方法
當(dāng)我們需要利用php插入含有特殊符號(hào)數(shù)據(jù)的時(shí)候,會(huì)發(fā)現(xiàn)數(shù)據(jù)無(wú)法正常插入,那么這個(gè)時(shí)候該如何解決呢?最近在工作就遇到了這個(gè)問(wèn)題,于是通過(guò)查找資料也得以解決了,現(xiàn)在將處理的方法分享給大家,有需要的朋友們可以參考借鑒,下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11PHP+Ajax 檢測(cè)網(wǎng)絡(luò)是否正常實(shí)例詳解
這篇文章主要介紹了PHP+Ajax 檢測(cè)網(wǎng)絡(luò)是否正常實(shí)例詳解的相關(guān)資料,這里附有實(shí)例代碼,需要的朋友可以參考下2016-12-12php自定義函數(shù)br2nl實(shí)現(xiàn)將html中br換行符轉(zhuǎn)換為文本輸入中換行符的方法【與函數(shù)nl2br功能相反】
這篇文章主要介紹了php自定義函數(shù)br2nl實(shí)現(xiàn)將html中br換行符轉(zhuǎn)換為文本輸入中換行符的方法,具有與函數(shù)nl2br相反的功能,并附帶了相應(yīng)的JS實(shí)現(xiàn)方法,需要的朋友可以參考下2017-02-02PHP中大括號(hào)''{}''用法實(shí)例總結(jié)
這篇文章主要介紹了PHP中大括號(hào)'{}'用法,結(jié)合實(shí)例形式總結(jié)分析了php中大括號(hào)在復(fù)合語(yǔ)句及變量界定等方面的使用技巧,需要的朋友可以參考下2017-02-02