天天看點

頁面關閉後,PHP程式沒有終止執行的解決辦法

解決辦法:

  1. 設定頁面逾時時間
  2. 設定

    ignore_user_abort

    為false
  3. 判斷

    connection_aborted

注:方法 2/3 都是通過與用戶端的互動擷取到的頁面狀态,所有必須存在實時輸出。

采用 2 時,當浏覽器關閉後,程式自動終止;

采用 3 的話,可以進行後續操作,例如,使用者中途關閉頁面後,記錄日志

<?php
    
//ignore_user_abort(false);

$i = 1;
while (1) {
    if (!connection_aborted()) {
        file_put_contents('hah.txt', $i . PHP_EOL, FILE_APPEND);
        echo 1;
        ob_flush();
        flush();
        sleep(1);
        $i ++;
    } else {
        file_put_contents('stop.txt', $i . PHP_EOL);
        exit();
    }
}