首頁  >  文章  >  後端開發  >  memcached - php 實作 memcache 儲存 session 的問題

memcached - php 實作 memcache 儲存 session 的問題

WBOY
WBOY原創
2016-08-04 09:20:44840瀏覽

先把 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 後寫入了這個空值。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn