當 PHP 處理大量資料或長時間運作的非同步請求時,若同一使用者同時發起其他請求,會因 Session 檔案被鎖定而導致後續請求阻塞(俗稱 Session 死鎖)。
<?php
// 在完成所有 Session 讀寫後,主動關閉 Session
session_write_close();
// 繼續執行耗時操作(資料庫匯入、API 呼叫、大量運算等)
// 此時其他請求可正常存取 Session
doHeavyTask();
?>
session_write_close() 將目前 Session 資料寫入儲存介質(檔案/Redis/Memcached)並釋放鎖。session_start())。Session::save() 或中間件處理)。session_set_save_handler() 自訂儲存驅動(Redis、資料庫)可進一步降低鎖爭用。