首頁  >  文章  >  後端開發  >  PHP定時任務

PHP定時任務

巴扎黑
巴扎黑原創
2016-11-23 11:23:411046瀏覽

PHP屬於弱型別解釋型語言,它的實現決定了它沒有Java和.Net這種AppServer的概念, 而http協議是一個無狀態的協議, PHP只能被用戶觸發調用, 調用後會自動退出內存, 沒有常駐記憶體, 就沒有辦法準確的定時處理。


      如果需要用PHP定時執行某些任務的話, 可以有以下方法:
    1、Linux下crontab, windows下計畫任務  
         死循環

 

      第一種:crontab定期執行的php文件,一般需要有個表格來記錄每個任務的名稱、目前進程ID、更新時間及進程開始ID 等資訊。批次過程包括:執行前準備、執行、執行後處理,整個處理過程可以利用OO思想來封裝個批次基類,每個批次工作可以繼承這個基類來實現資料的處理。

      第二種:透過存取此檔案觸發執行,存在Apache伺服器重新啟動後或機器重新啟動(windows環境)後終止的問題。範例如下:

ignore_user_abort(true);  // 设置关闭浏览器后也可执行
set_time_limit(0);  // 设置相应时间无限制,原默认30s
function write_txt()
{
$filename = 'test.txt';
if (!file_exists($filename))
{
$fp = fopen($filename, 'w');
fclose($fp);
}
$fp = fopen($filename, 'r+');
$str = file_get_contents($filename);
$str .= date('Y-m-d H:i:s')."\r\n";
fwrite($fp, $str);
fclose($fp);
}
function do_cron()
{
write_txt();
sleep(30);
}
while (1)
{
do_cron();
}

 connection_aborted() — 檢查客戶端是否已斷開斷開則回傳1,否則回傳0

 connection_status — 回傳連線的狀態位元0 - NORMAL(正常); 1 - ABORTED(異常退出); 2 - TIMEOUT(超時)

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