`session.gc()` 函式似乎無法單獨運作。它會刪除伺服器上的數據,但數據會以 Cookie 的形式保留在瀏覽器中。以下程式碼會刪除伺服器上的 Session 檔案,但不會刪除瀏覽器上的 Cookie。
ini_set('session.gc_maxlifetime', 10);
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 1);
// 啟動 Session
session_start();
$_SESSION['test'] = '暫時資料';
session_write_close();
// 等待 15 秒以確保 Session 過期
sleep(15);
// 手動重新啟動 Session 以觸發 Session 處理
session_start();
session_gc();
// 檢查 Session 資料是否仍然可用
if (isset($_SESSION['test'])) {
echo "Session 仍然有效。";
} else {
echo "Session 已過期且檔案已刪除。";
}
但以下程式碼會刪除伺服器上的 Session 檔案,同時也會刪除 Cookie 並清空全域變數 $_SESSION
session_start();
$_SESSION['test'] = '暫時資料';
session_write_close();
// 等待 15 秒以確保 Session 過期
sleep(15);
session_start();
// 手動觸發垃圾回收
setcookie(session_name(), '', time() - 10);
$_SESSION = [];
session_gc();
// 檢查 Session 資料是否仍然可用
if (isset($_SESSION['test'])) {
echo "Session 仍然有效。";
} else {
echo "Session 已過期且檔案已刪除。";
}