天天看點

php定時任務優缺點,PHP定時任務

PHP屬于弱類型解釋型語言,它的實作決定了它沒有Java和.Net這種AppServer的概念, 而http協定是一個無狀态的協定, PHP隻能被使用者觸發調用, 調用後會自動退出記憶體, 沒有常駐記憶體, 就沒有辦法準确的定時處理。

如果需要用PHP定時執行某些任務的話, 可以有如下方法:

1、Linux下crontab, windows下計劃任務

2、set_time_limit(0);

ignore_user_abort(true);

死循環

第一種: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(逾時)

本條技術文章來源于網際網路,如果無意侵犯您的權益請點選此處回報版權投訴

本文系統來源:php中文網