2013-11-28 168 views
0

Google App Engine for PHP將會話數據存儲在memcache中,該數據很好且快速(而且便宜),但來自memcache的會話數據似乎在8-10分鐘後清除,比我需要的少。繼谷歌的建議,將會話數據存儲在數據庫和memcache中

...在App Engine的內存緩存的數據可能會定期刷新,這意味着 任何會話信息將丟失。對於更長時間的會話,它可能更適合使用替代存儲服務,例如SQL Cloud。 (https://developers.google.com/appengine/docs/php/#PHP_Sessions

我正在使用Zend_Session_SaveHandler_DbTable將會話數據存儲在數據庫中。然而,就我所知,這個缺點是必須訪問每個頁面請求的數據庫(延遲和成本都會增加)。

我的問題

有沒有辦法來堅持在數據庫會話數據,而且使用內存緩存所以數據庫是打每一次? (我使用的是Zend Framework 1.12)

回答

2

當然。只需指定一個自定義的session_set_save_handler即可保存到兩者,並首先檢查加載的memcache,如果未找到則回退到數據庫。

現在,會話仍然需要保存到兩者(否則當memcache被清除時可能會丟失數據),所以成本可能會保持相似,但會減少延遲,因爲會話保存在頁面之後呈現,因此不包含在用戶可見的延遲中。它還會減少加載會話所需的讀取次數。

+0

啊!我沒想過每次都需要實際保存......當然......謝謝! –