2013-11-28 117 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

啊!我没想过每次都需要实际保存......当然......谢谢! –