我在使用memcached處理會話時收到了一個非常奇怪的行爲。 看起來像我的用戶正在分享會議,因爲(目前)沒有理由。與memcached的PHP會話。 session_destroy()不會刪除內存緩存條目
使用案例:
我登錄,獲得 'XXX' 的PHPSESSID。無緣無故,另一臺計算機的另一位用戶得到的是相同的PHPSESSID,當然還有我的個人資料和所有其他會話數據。
從你的頭頂開始,session_start()發出已創建的SESSID的原因是什麼?
經過數小時的調試,我發現唯一'奇怪'的事情'註銷'行動並不會刪除該會話的memcached條目。
// Resume session.
session_start();
// Unset all session data.
$_SESSION[V::$SESS_NAME] = array();
// Kill session cookie.
if(ini_get('session.use_cookies'))
{
$params = session_get_cookie_params();
// Send this cookie to the past. Time travel - possible!
setcookie(session_name(), '', time() - 42000, $params['path'], $params['domain'], $params['secure'], $params['httponly']);
}
// Destroy the session.
session_destroy();
Does anyone else experienced similar behaviour while working with PHP memcached session?
Thanks, Mike
Hm ...因此,session_start()會將memc.sess.key.SESSIONID添加到memcached中,寫入$ _SESSION會將值寫入memc.sess.key.SESSIONID,但session_destroy()不會刪除memc.sess memcached中的.key.SESSIONID?如果這是真的,你知道這是從經驗還是有鏈接,我可以讀一讀? – rock3t