所以我創建了一個類實現SessionhandlerInterface並將其設置爲一個會話處理程序:SessionHandlerInterface寫方法不會被調用
$sessionHandler = new SessionHandler();
session_set_save_handler($sessionHandler);
session_start();
的問題是,寫功能不會被調用。
如果我使用的session_set_save_handler的第二個參數,並將其設置爲false:
session_set_save_handler($sessionHandler, false);
然後它工作正常。有人可以向我解釋這種行爲嗎?我正在使用PHP 5.4.6。
在本文檔中有記載:
當使用對象作爲會話保存處理程序,它註冊到PHP的關機功能,以避免PHP的方式意想不到的副作用內部破壞在關閉的對象是非常重要的並可能阻止寫入和關閉被調用。通常你應該使用register_shutdown_function()函數註冊'session_write_close'。
自PHP 5.4.0可以使用session_register_shutdown()或簡單地使用OOP方法並傳遞實現SessionHandlerInterface一個實例調用一下session_set_save_handler()時所使用的「寄存器關閉」標誌。
但我不完全明白這一點。
'SessionHandler'的實現是什麼? –
如何調用'session_write_close()'? –