php 模擬守護進程(Daemon)-程序永遠在後臺運行

基礎示例
下面這個例子,在用戶關閉瀏覽器後,該腳本仍而後在服務器上繼續執行:php

使用接口:

int ignore_user_abort ( [bool setting] )

方法聲明:

這個函數的做用是指示服務器端在遠程客戶端關閉鏈接後是否繼續執行下面的腳本。

參數說明:

setting:參數是一個可選參數。如設置爲True,則表示若是用戶中止腳本運行,仍然不影響腳本的運行(即:腳本將持續執行);若是設置爲False,則表示當用戶中止運行腳本程序時,腳本程序將中止運行。
<?php
// 後臺運行
ignore_user_abort();
// 取消腳本運行時間的超時上限
set_time_limit(0);

// 執行輪循
do {
    // 休眠1分鐘
    sleep(60);
    // 處理具體事情
    echo 'Do!';
} while(true);
?>

實現功能1:每10秒記錄時間到文件,永不停歇。瀏覽器

<?php
// 後臺運行
ignore_user_abort();
// 取消腳本運行時間的超時上限
set_time_limit(0);

// 調試日誌[開始]
echo 'start.';
// 執行輪循
while(!file_exists('close.txt')) {
    // 打開文件
    $handle = fopen('test.txt', 'a+');
    // 寫入日期
    fwrite($handle,date("Y-m-d H:i:s") . " 成功了!\n");
    // 關閉文件
    fclose($handle);
    // 休眠10秒鐘
    sleep(60);
}
// 調試日誌[結束]
echo 'end.';
?>

每5秒輸出語句,永不停歇。服務器

<?php
// 設置輸出類型
header("Content-Type: text/plain");
// 取消腳本運行時間的超時上限
set_time_limit(0);

// 定義字符串
$str = "Hello World" . "\n";
// 循環定時執行
while (isset($str)) {
    // 輸出日誌
    echo $str;
    // 刷新緩衝區
    flush();
    ob_flush();
    // 休眠5秒鐘
    sleep(5);
}
相關文章
相關標籤/搜索