SessionHandler::gc()是一個(gè)用于垃圾回收的函數(shù),它是PHP的內(nèi)置函數(shù)。它的作用是刪除過(guò)期的會(huì)話數(shù)據(jù)。
用法:
bool SessionHandler::gc(int $maxlifetime): bool
參數(shù):
- $maxlifetime(必需):會(huì)話的最大生存時(shí)間,以秒為單位。
返回值:
- 成功時(shí)返回true,失敗時(shí)返回false。
示例:
class MySessionHandler extends SessionHandler {
public function gc($maxlifetime) {
// 進(jìn)行垃圾回收操作,刪除過(guò)期的會(huì)話數(shù)據(jù)
// 在這里可以根據(jù)需要自定義垃圾回收的邏輯
// 例如,可以刪除一周前的會(huì)話數(shù)據(jù)
$expiredTime = time() - $maxlifetime;
$query = "DELETE FROM sessions WHERE last_accessed < $expiredTime";
// 執(zhí)行刪除操作的代碼
// ...
return true; // 垃圾回收成功
}
}
// 設(shè)置自定義的會(huì)話處理器
$handler = new MySessionHandler();
session_set_save_handler($handler, true);
// 啟動(dòng)會(huì)話
session_start();
// 執(zhí)行其他操作...
// 會(huì)話結(jié)束時(shí),PHP會(huì)自動(dòng)調(diào)用gc()函數(shù)進(jìn)行垃圾回收
在這個(gè)示例中,我們創(chuàng)建了一個(gè)名為MySessionHandler
的自定義會(huì)話處理器類(lèi),并重寫(xiě)了gc()
方法。在gc()
方法中,我們使用SQL語(yǔ)句刪除了一周前的過(guò)期會(huì)話數(shù)據(jù)。然后,我們通過(guò)session_set_save_handler()
函數(shù)將自定義的會(huì)話處理器設(shè)置為當(dāng)前會(huì)話的處理器。最后,在會(huì)話結(jié)束時(shí),PHP會(huì)自動(dòng)調(diào)用gc()
函數(shù)進(jìn)行垃圾回收操作。