PHP定時執(zhí)行計劃任務的多種方法小結
1、windows 的計劃任務
2、linux的腳本程序
3、讓web瀏覽器定時刷新
具體實現(xiàn)
windows計劃任務
PHP很少在win服務器上跑,具體實現(xiàn)也不再深究,看網(wǎng)上實現(xiàn)的原理大概是寫bat腳本,然后讓window任務添加執(zhí)行這個bat腳本,具體可以參考:http://www.dhdzp.com/article/29134.htm
linux 的腳本實現(xiàn)
這里主要使用到crontab這個命令,
使用方式 :
crontab filecrontab [ -u user ] [ -u user ] { -l | -r | -e }
說明 :
crontab 是用來讓使用者在固定時間或固定間隔執(zhí)行程式之用
使用crontab寫shell腳本,然后讓PHP調用shell,這個是利用linux的特性,應該還不算PHP自身語言的特性
可以參看:http://www.dhdzp.com/article/29136.htm
PHP實現(xiàn)定時執(zhí)行計劃任務
使用php讓瀏覽器刷新需要解決幾個問題
PHP腳本執(zhí)行時間限制,默認的是30m 解決辦法:set_time_limit();或者修改PHP.ini 設置max_execution_time時間(不推薦)
如果客戶端瀏覽器關閉,程序可能就被迫終止,解決辦法:ignore_user_abort即使關閉頁面依然正常執(zhí)行
如果程序一直執(zhí)行很有可能會消耗大量的資源,解決辦法使用sleep使用程序休眠一會,然后在執(zhí)行
PHP定時執(zhí)行的代碼:
<?php
ignore_user_abort();//關掉瀏覽器,PHP腳本也可以繼續(xù)執(zhí)行.
set_time_limit(3000);// 通過set_time_limit(0)可以讓程序無限制的執(zhí)行下去
$interval=5;// 每隔5s運行
//方法1--死循環(huán)
do{
echo '測試'.time().'<br/>';
sleep($interval);// 等待5s
}while(true);
//方法2---sleep 定時執(zhí)行
require_once './curlClass.php';//引入文件
$curl = new httpCurl();//實例化
$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)這個效率并不是很高,
總結:
個人感覺PHP定時執(zhí)行任務的效率不是很高,建議關于定時執(zhí)行任務的工作還是交給shell來做吧,比較那才是王道。
ps:那個死循環(huán)的方法好像是惡意攻擊網(wǎng)站經(jīng)常使用的方法
相關文章
解析PHP獲取當前網(wǎng)址及域名的實現(xiàn)代碼
本篇文章是對PHP獲取當前網(wǎng)址及域名的代碼進行了詳細的分析介紹,需要的朋友參考下2013-06-06
php中使用key,value,current,next和prev函數(shù)遍歷數(shù)組的方法
這篇文章主要介紹了php中使用key,value,current,next和prev函數(shù)遍歷數(shù)組的方法,較為詳細的分析了php中數(shù)組遍歷的常用技巧與實例用法,需要的朋友可以參考下2015-03-03
PHP中include和require的區(qū)別實例分析
網(wǎng)上太多關于PHP中include與require區(qū)別。然而事實真的如此嗎,今天我們就通過一個具體的實例來簡單分析驗證下2017-05-05
PHP4和PHP5性能測試和對比 測試代碼與環(huán)境
PHP4和PHP5性能測試和對比 測試代碼與環(huán)境...2007-08-08
php使用ffmpeg獲取視頻信息并截圖的實現(xiàn)方法
這篇文章主要介紹了php使用ffmpeg獲取視頻信息并截圖的實現(xiàn)方法,實例分析了php操作視頻與圖像的相關技巧,需要的朋友可以參考下2016-05-05
PHP在不同頁面間傳遞Json數(shù)據(jù)示例代碼
本文為大家介紹下PHP如何在不同頁面間傳遞Json數(shù)據(jù),具體實現(xiàn)如下,感興趣的朋友可以參考下哈,希望對大家有所幫助2013-06-06
php 隨機記錄mysql rand()造成CPU 100%的解決辦法
mysql數(shù)據(jù)庫有10幾萬條數(shù)據(jù),使用rand()提取隨機10條記錄,導致服務器cpu占用居高不下直至死機~2010-05-05

