先把 session.save_handler = user,注意不是 memcache。
然後自訂類別 Session 實作 SessionHandlerInterface 接口,建立對象,session_set_save_handler 註冊,這樣每次例如:
$_SESSION['aaa'] = '123';
的時候,php 就會呼叫透過 Session->write(),函數中我自己人為往 memcache 中插入 sess- 為前綴,session_id() 為後綴的記錄,例如:key = sess-4fqrbhed9f3grq4p4ssbljg867。
這時候有個很奇怪的問題,每次我跟著$_SESSION['aaa'] = '123'; 這條,去memcache 中取這個session_id() 對應的資料時都可以取得到,但是刪除$_SESSION ['aaa'] = '123'; 之後memcache 中資料就被自動刪掉了。
先把 session.save_handler = user,注意不是 memcache。
然後自訂類別 Session 實作 SessionHandlerInterface 接口,建立對象,session_set_save_handler 註冊,這樣每次例如:
$_SESSION['aaa'] = '123';
的時候,php 就會呼叫透過 Session->write(),函數中我自己人為往 memcache 中插入 sess- 為前綴,session_id() 為後綴的記錄,例如:key = sess-4fqrbhed9f3grq4p4ssbljg867。
這時候有個很奇怪的問題,每次我跟著$_SESSION['aaa'] = '123'; 這條,去memcache 中取這個session_id() 對應的資料時都可以取得到,但是刪除$_SESSION ['aaa'] = '123'; 之後memcache 中資料就被自動刪掉了。
修改php.ini
session.save_handler = memcache
session.save_path = tcp://127.0.0.1:11211;tcp://127.0.0.1:11212;tcp://127.tcp://127.0.0.1:11212;tcp://127.0.0.1:1113
已解決,原因是未實作 SessionHandlerInterface::read() 導致刷新後 $_SESSION 被設定為空值,接著導致呼叫 write 後寫入了這個空值。