【问题标题】:Heavy database load when using CodeIgniter Session class?使用 CodeIgniter Session 类时数据库负载过重?
【发布时间】:2011-04-19 15:16:38
【问题描述】:

在阅读了 CodeIgniter 如何处理会话后,我担心将会话配置为从数据库存储和检索时对性能的影响。

这来自 CI 文档:“当会话数据在数据库中可用时,每次在用户的 cookie 中找到有效会话时,都会执行数据库查询以匹配它。”

所以每个 AJAX 调用,我请求的每个 HTML 片段都会有这种开销?对于试图扩展的系统来说,这可能是一个巨大的问题!

我猜 CI 会更好地实现它:在会话记录中编码时包含 MD5 哈希以覆盖 sessionID+timestamp。然后,只要重新生成 sessionID,就每 X 分钟检查一次数据库中的会话记录。我错过了什么吗?

【问题讨论】:

  • 会话标头是否与 XmlHttpRequests 一起发布?

标签: database session codeigniter scalability


【解决方案1】:

您可以使您的 AJAX 请求使用不同的控制器,例如 Ajax_Controller 而不是 MY_Controller。 MY_Controller 会加载 Session 类,但 Ajax_Controller 不会。这样,当您调用 AJAX 时,它不会触及会话数据,因此不会对数据库进行任何不必要的错误调用。

如果您正在自动加载 Session 类,也许您可​​以尝试为 AJAX 请求卸载它?我从来没有尝试过,但是这里谈到了http://codeigniter.com/forums/viewthread/65191/#320552 然后做这样的事情

if($this->input->is_ajax_request()){ // 卸载会话类代码到这里 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 2012-11-19
    • 2013-10-11
    相关资源
    最近更新 更多