首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 實作背景日誌寫入:ignore_user_abort 與 sleep 應用

     編輯:PHP 相關知識

應用場景

需要一個長期在背景運行的 PHP 腳本,定期寫入日誌或執行排程任務,且不因瀏覽器關閉而中斷。

核心程式碼 sleep.php

<?php
ignore_user_abort(true);   // 使用者斷線也持續執行
set_time_limit(0);         // 移除 30 秒執行限制

$interval = 10;            // 每 10 秒執行一次
do {
    include 'cron-config.php'; // 載入控制開關
    if ($cron_config['run'] === 'false') {
        echo "跳出迴圈";
        break;
    }

    $fp = fopen('test.txt', 'a');
    fwrite($fp, 'test '.date('Y-m-d H:i:s').PHP_EOL);
    fclose($fp);

    sleep($interval);
} while (true);
echo "腳本結束";
?>

控制設定 cron-config.php

<?php
$cron_config['run'] = 'true'; // 改為 'false' 可停止腳本
?>

關鍵函數解析

函數作用
ignore_user_abort(true)忽略用戶端斷開連線,腳本繼續在伺服器端執行。
set_time_limit(0)移除最大執行時間限制(預設 30 秒)。
sleep($seconds)暫停腳本指定秒數,釋放 CPU 資源。

部署建議

  • 透過 nohup php sleep.php > /dev/null 2>&1 & 在背景常駐運行。
  • 生產環境建議改用 Systemd、Supervisor 或 Cron 管理長程序。
  • 日誌檔案需考慮權限與磁碟空間,建議搭配 Logrotate 切割。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved