【问题标题】:Storing session data in database AND memcache在数据库和内存缓存中存储会话数据
【发布时间】:2013-11-28 18:21:01
【问题描述】:

Google App Engine for PHP 将会话数据存储在 memcache 中,这既好又快(而且便宜),但 memcache 中的会话数据似乎在 8-10 分钟后被清除,这比我需要的要少得多。按照 Google 的建议,

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

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

我的问题

有没有办法将会话数据保存在数据库中,但也可以使用 memcache,这样数据库就不会每次都被命中? (我使用的是 Zend Framework 1.12)

【问题讨论】:

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


    【解决方案1】:

    当然。只需指定一个自定义的session_set_save_handler 保存到两者,并首先检查内存缓存是否有负载,如果找不到则回退到数据库。

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

    【讨论】:

    • 啊!我没有想过每次都需要实际保存...当然...谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多