癥狀
有set_session.php和read_session.php兩個檔案。訪問set_session.php,種下session資料。然後訪問read_session.php,發現session資料讀取正常。不論5分鐘後重新整理read_sesion.php還是再在別的檔案訪問,都正常。
但是如果我按住f5鍵(注意是按住),大約5秒後鬆開(也就是說瀏覽器在短時間內重新整理了幾十、幾百次),read_session.php反饋出來的session就為空白。這時拿著session_id去memcache裡找,發現該key存在,但value為空白。
環境
伺服器是Windows Server 2003 32bit。使用XAMPP3.1.0,PHP版本是5.4。PHP配置如下:
session.save_handler = memcachesession.save_path = "127.0.0.1:22003"session.auto_start = 1
MC版本是1.4.4,從http://downloads.northscale.com/memca... 下載的,DLL是http://windows.php.net/downloads/pecl...
詭異之處
我能確定:記憶體肯定沒有滿、沒有任何其他人訪問這台伺服器,也沒有其他應用運行在上面。
完完全全同樣的xampp/php/mc配置,在我本地的windows7(64bit)上面,就沒有任何的問題。如果我把伺服器上的session_handler換成files,也沒有任何的問題。最後我們懷疑是串連數或者win03方面的問題,發現win03在tcp串連上沒有限制,如果是win03核心的問題,我也木有辦法了。。╮(╯_╰)╭
這個問題折騰了一整天,最後決定放棄memcache儲存,等到換到linux再用mc儲存,反正也沒什麼高負載。但是我們用mc儲存其它資料,比如商品啊,分類啊,或者smarty緩衝,都很正常,唯獨session沒法裝進去。
回複內容:
癥狀
有set_session.php和read_session.php兩個檔案。訪問set_session.php,種下session資料。然後訪問read_session.php,發現session資料讀取正常。不論5分鐘後重新整理read_sesion.php還是再在別的檔案訪問,都正常。
但是如果我按住f5鍵(注意是按住),大約5秒後鬆開(也就是說瀏覽器在短時間內重新整理了幾十、幾百次),read_session.php反饋出來的session就為空白。這時拿著session_id去memcache裡找,發現該key存在,但value為空白。
環境
伺服器是Windows Server 2003 32bit。使用XAMPP3.1.0,PHP版本是5.4。PHP配置如下:
session.save_handler = memcachesession.save_path = "127.0.0.1:22003"session.auto_start = 1
MC版本是1.4.4,從http://downloads.northscale.com/memca... 下載的,DLL是http://windows.php.net/downloads/pecl...
詭異之處
我能確定:記憶體肯定沒有滿、沒有任何其他人訪問這台伺服器,也沒有其他應用運行在上面。
完完全全同樣的xampp/php/mc配置,在我本地的windows7(64bit)上面,就沒有任何的問題。如果我把伺服器上的session_handler換成files,也沒有任何的問題。最後我們懷疑是串連數或者win03方面的問題,發現win03在tcp串連上沒有限制,如果是win03核心的問題,我也木有辦法了。。╮(╯_╰)╭
這個問題折騰了一整天,最後決定放棄memcache儲存,等到換到linux再用mc儲存,反正也沒什麼高負載。但是我們用mc儲存其它資料,比如商品啊,分類啊,或者smarty緩衝,都很正常,唯獨session沒法裝進去。
Memcached在session數超過一定值後不適合用來儲存session。
Memcache採用slab記憶體預分配,固定長度key的數量是有限的,如果數量佔滿會依據LRU刪除key,造成丟失。