首頁  >  文章  >  後端開發  >  定時 PHP定時執行排程任務的多種方法小結

定時 PHP定時執行排程任務的多種方法小結

WBOY
WBOY原創
2016-07-29 08:47:26992瀏覽

PHP定時執行的三種方式實作
1、windows 的排程任務
2、linux的腳本程式
3、讓web瀏覽器定時刷新
具體實作
windows排程任務
PHP很少在win伺服器上跑,具體實現也不再深究,看網路上實作的原理大概是寫bat腳本,然後讓window任務加入執行這個bat腳本,具體可以參考:http://www.jb51.net/article/29134.htm
linux 的腳本實現
這裡主要使用到crontab這個指令,
使用方式:
crontab filecrontab [ -u user ] [ -u user ] { -l | -r | -e }
說明:
crontab 是用來讓使用者在固定時間或固定間隔執行程式之用
使用crontab寫shell腳本,然後讓PHP呼叫shell,這個是利用linux的特性,應該還不算PHP自身語言的特性
可以參考:http://www.jb51.net/ article/29136.htm
PHP實作定時執行排程任務
使用php讓瀏覽器重新整理需要解決幾個問題
PHP腳本執行時間限制,預設的是30m 解決方法:set_time_limit();或修改PHP.ini 設定max_execution_time時間(不建議)
如果客戶端瀏覽器關閉,程式可能就被迫終止,解決辦法:ignore_user_abort即使關閉頁面依然正常執行
如果程式一直執行很有可能會消耗大量的資源,解決辦法使用sleep使用程式休眠一會兒,然後執行
PHP定時執行的程式碼:

複製程式碼 程式碼如下:


set_time_limit(3000);// 透過set_time_limit(0)可以讓程式無限制的執行下去
$interval=5;// 每隔5s運行
//方法1--死循環
do{
echo '測試'. time().'
';
sleep($interval);// 等待5s
}while(true);
//方法2---sleep 定時執行
require_once './curlClass.php'; //引入檔案
$curl = new httpCurl();//實例化
$stime = $curl->getmicrotime();
for($i=0;$iecho '測試'.time().'
';
sleep($interval);// 等待5s
}
ob_flush();
flush();
$etime = $curl->getmicrotime();
echo '


';
echo round(($etime-stime),4);//程序執行時間


測試的時候發現這個效率並不是很高,

  PHP定时执行计划任务的多种方法小结總結個人感覺:
總結PHP定時執行任務的效率不是很高,建議關於定時執行任務的工作還是交給shell來做吧,比較那才是王道。
ps:那個死循環的方法好像是惡意攻擊網站常用的方法

以上就介紹了定時 PHP定時執行規劃任務的多種方法小結,包括了定時方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn