我遇到了很多問題,導致重新導向無法運作,之後我的腳本原本應該在背景中繼續運作。重新導向到我網站的另一個頁面,只有在原始頁面完成處理後才會運作。
我終於發現了問題所在
Session 只有在腳本的最後才會被 PHP 關閉,由於對 Session 資料的存取會被鎖定,以防止多個頁面同時寫入,因此新的頁面在原始處理完成之前無法載入。
解決方案
使用 session_write_close() 重新導向時手動關閉 Session
<?php
ignore_user_abort(true);
set_time_limit(0);
$strURL = "在此處放置您的重新導向連結";
header("Location: $strURL", true);
header("Connection: close", true);
header("Content-Encoding: none\r\n");
header("Content-Length: 0", true);
flush();
ob_flush();
session_write_close();
sleep(100);
exit;
?>
但要小心
請確保您的腳本在 session_write_close() 之後不會寫入 Session,例如在您的背景處理程式碼中。這將無法運作。還要避免讀取,請記住,下一個腳本可能已經修改了資料。
因此,請嘗試在重新導向前讀取您需要的資料。