PHP定時執(zhí)行任務(wù)的3種方法詳解
PHP定時執(zhí)行的三種方式實(shí)現(xiàn)
- 1、windows 的計(jì)劃任務(wù)
- 2、linux的腳本程序
- 3、讓web瀏覽器定時刷新
具體實(shí)現(xiàn)
1、windows計(jì)劃任務(wù)
PHP很少在win服務(wù)器上跑,具體實(shí)現(xiàn)也不再深究,看網(wǎng)上實(shí)現(xiàn)的原理大概是寫bat腳本,然后讓window任務(wù)添加執(zhí)行這個bat腳本。
2、linux 的腳本實(shí)現(xiàn)
這里主要使用到crontab這個命令,
使用方式 :
說明 :
crontab是用來讓使用者在固定時間或固定間隔執(zhí)行程式之用
使用crontab寫shell腳本,然后讓PHP調(diào)用shell,這個是利用linux的特性,應(yīng)該還不算PHP自身語言的特性
3、PHP實(shí)現(xiàn)定時執(zhí)行計(jì)劃任務(wù)
使用php讓瀏覽器刷新需要解決幾個問題
PHP腳本執(zhí)行時間限制,默認(rèn)的是30m 解決辦法:set_time_limit();或者修改PHP.ini 設(shè)置max_execution_time時間(不推薦)
如果客戶端瀏覽器關(guān)閉,程序可能就被迫終止,解決辦法:ignore_user_abort即使關(guān)閉頁面依然正常執(zhí)行
如果程序一直執(zhí)行很有可能會消耗大量的資源,解決辦法使用sleep使用程序休眠一會,然后在執(zhí)行
PHP定時執(zhí)行的代碼:
<?php
ignore_user_abort();//關(guān)掉瀏覽器,PHP腳本也可以繼續(xù)執(zhí)行.
set_time_limit(3000);// 通過set_time_limit(0)可以讓程序無限制的執(zhí)行下去
$interval=5;// 每隔5s運(yùn)行
//方法1--死循環(huán)
do{
echo '測試'.time().'<br/>';
sleep($interval);// 等待5s
}while(true);
//方法2---sleep 定時執(zhí)行
require_once './curlClass.php';//引入文件
$curl = new httpCurl();//實(shí)例化
$stime = $curl->getmicrotime();
for($i=0;$i<=10;$i++){
echo '測試'.time().'<br/>';
sleep($interval);// 等待5s
}
ob_flush();
flush();
$etime = $curl->getmicrotime();
echo '<hr>';
echo round(($etime-stime),4);//程序執(zhí)行時間
測試的時候發(fā)現(xiàn)這個效率并不是很高。

總結(jié):
個人感覺PHP定時執(zhí)行任務(wù)的效率不是很高,建議關(guān)于定時執(zhí)行任務(wù)的工作還是交給shell來做吧。
以上就是PHP定時執(zhí)行任務(wù)的3種方法,對于前一篇文章結(jié)尾中提到的crontab這個命令,也進(jìn)行了簡單介紹,希望大家能夠有所收獲。
相關(guān)文章
PHP中使用localhost連接Mysql不成功的解決方法
這篇文章主要介紹了PHP中使用localhost連接Mysql不成功的解決方法,但使用127.0.0.1則沒有問題,本文也可以說是對連接MySQL主機(jī)使用127.0.0.1與localhost的區(qū)別的講解,需要的朋友可以參考下2014-08-08
php統(tǒng)計(jì)數(shù)組元素個數(shù)的方法
這篇文章主要介紹了php統(tǒng)計(jì)數(shù)組元素個數(shù)的方法的相關(guān)資料,需要的朋友可以參考下2015-07-07
PHP時間日期增減操作示例【date strtotime實(shí)現(xiàn)加一天、加一月等操作】
這篇文章主要介紹了PHP時間日期增減操作,結(jié)合實(shí)例形式分析了php使用date、strtotime等函數(shù)實(shí)現(xiàn)加一天、加一月等運(yùn)算相關(guān)實(shí)現(xiàn)技巧與問題解決方法,需要的朋友可以參考下2018-12-12
PHP中使用break跳出多重循環(huán)代碼實(shí)例
這篇文章主要介紹了PHP中使用break跳出多重循環(huán)代碼實(shí)例,本文直接給出代碼,代碼簡潔易一懂,一看就明白了,需要的朋友可以參考下2015-01-01

