這一節主要討論PHP定時執行任務的實現方法。
    首先,每個PHP腳本都限制了執行時間,所以我們需要通過 set_time_limit 來設置一個腳本的執行時間為無限長。php默認的執行時間是30秒,通過set_time_limit(0)可以讓程序無限制的執行下去 。
    解決了執行時間的問題,但如果客戶端斷開了怎么辦呢?使用函數 ignore_user_abort(),即使Client斷開(如關掉瀏覽器),PHP腳本也可以繼續執行。除非 apache 等服務器重啟,該PHP腳本將一直處于執行的狀態。
語法:
1、int ignore_user_abort ([ string $html' target='_blank'>value ] )函數:
    設置客戶端斷開連接時是否中斷腳本的執行。PHP以命令行腳本執行時,當腳本終端結束,腳本不會被立即中止,除非設置 value 為 TRUE,否則腳本輸出任意字符時會被中止。
    如果設置了 value 值,函數會把 ignore_user_abort ini的值設置為 value。 如果未設置該值,函數不會改變設置,僅會返回之前的設置。
    注意:在PHP嘗試發送信息到客戶端之前,不會檢測到用戶是否已中斷連接。 僅使用 echo 語句不能確保信息已發送。
2、void set_time_limit ( int $seconds )函數:
    設置允許腳本運行的時間,單位為秒。如果超過了此設置,腳本返回一個致命的錯誤。默認值為30秒,或者是 php.ini 中max_execution_time被定義的值(如果此值存在)。
    當此函數被調用時,set_time_limit()會從零開始重新啟動超時計數器。換句話說,如果超時默認是30秒,在腳本運行了了25秒時調用 set_time_limit(20),那么,腳本在超時之前可運行總時間為45秒。
   注意:當php運行于安全模式時,此功能不能生效。除了關閉安全模式或改變php.ini中的時間限制,沒有別的辦法。 
接下來,我們來看一個例子:
--------------------------------------------------------------------
<?php
    ignore_user_abort();    //關掉瀏覽器,PHP腳本也可以繼續執行.
    set_time_limit(0);      // 通過set_time_limit(0)可以讓程序無限制的執行下去
    function write_txt()
    {
        if(!file_exists("test.txt"))
        {
            $fp = fopen("test.txt","wb");
            fclose($fp);
        }
        $str = file_get_contents('test.txt');
        $str .= "/r/n".date("H:i:s");
        echo $str;
        $fp = fopen("test.txt","wb");
        fwrite($fp,$str);fclose($fp);
    }
    function do_cron()
    {
        $interval=60*1;        // 每隔1分鐘運行
        sleep($interval);       
        write_txt();
    }
    do{                     
        do_cron();
    }while(true);
?>
--------------------------------------------------------------------
代碼執行結果:

PHP編程        鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。