将会话数据存储在数据库和内存缓存中

时间:2013-11-28 18:21:01

标签: php google-app-engine session caching memcached

Google App Engine for PHP在memcache中存储会话数据,这很好,速度快(而且便宜),但是memcache的会话数据似乎在8-10分钟后清除,这比我需要的要少得多。根据谷歌的建议,

  

... App Engine内存中的数据可能会定期刷新,这意味着   任何会话信息都将丢失。对于长寿会议,它   可能更喜欢使用其他存储服务,例如Cloud   SQL。 (https://developers.google.com/appengine/docs/php/#PHP_Sessions

我正在使用Zend_Session_SaveHandler_DbTable将会话数据存储在数据库中。但是,据我所知,这方面的缺点是每个页面请求都必须访问数据库(延迟和成本都会上升)。

我的问题

有没有办法在数据库中保存会话数据,但也使用内存缓存,因此数据库不会每次都被点击? (我正在使用Zend Framework 1.12)

1 个答案:

答案 0 :(得分:2)

不确定。只需指定一个保存到两者的自定义session_set_save_handler,然后首先检查memcache是​​否有负载,如果找不到则返回数据库。

现在,仍然需要将会话保存到两者(否则在清除memcache时可能会丢失数据),因此成本可能会保持相似,但它会减少延迟,因为会话保存在页面呈现之后,因此不包括在用户可见的延迟中。它还会减少加载会话所需的读取次数。