天天看點

PHP計劃任務的一種實作方法

如果由頁面執行,設定

<?php

ignore_user_abort(true);

set_time_limit(0);

?>

運用sleep(300)+死循環,

這樣就可以實作計劃任務了,這個程式裡不要有輸出,有輸出容易中斷

<?php

ignore_user_abort(true);

set_time_limit(0);

while(1){

    $fp = fopen('time_task.txt',"a+");

    $str = date("Y-m-d h:i:s")."n";

    fwrite($fp,$str);//記錄到time_task.txt文本

    fclose($fp);

    sleep(1800);    //半小時執行一次

}

?>

函數int ignore_user_abort :

從函數名本身,可以解釋為,"忽略使用者的影響" 

因為所謂的使用者是指用戶端,即浏覽器

是以進一步解釋為,"忽略浏覽器的影響"

那麼影響指的是什麼,影響指的是浏覽器的關閉和異常

也就是說有這個函數在的php程式,即使在浏覽器關掉的時候,程式沒有執行完它還會繼續執行,直到執行完

比如說,你有一段代碼需要執行100秒,可是這個時間太長了,一般使用者等不及,在等了60秒的時候受不了就關了

如果這個時候程式也随之終止,很可能造成資料異常,不一緻或是錯誤,你需要程式繼續運作,就可以用它了

它的參數就是真和假,真就是忽略,假就是不忽略

php