使用CodeIgniter Session类时加载大量数据库?

时间:2011-04-19 15:16:39

标签: database session codeigniter scalability

在阅读了CodeIgniter如何处理会话之后,让我关注会话配置为从数据库中存储和检索时的性能影响。

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

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

我猜想CI会更好地实现它:在会话记录中对它们进行编码时,包括MD5哈希以涵盖sessionID +时间戳。然后,只要重新生成sessionID,每X分钟只检查数据库中的会话记录。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

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

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

如果($这 - >输入 - > is_ajax_request()){ //卸载会话类代码到这里 }