有人可以解释或告诉我某种“设置”是什么吗?在Codeigniter会解决这个问题吗?
系统:亚马逊AWS EC2(AWS Linux Centos 6.9)
数据库:Amazon AWS RDS(兼容Mysql的5.6.34)
框架:Codeigniter 3.0.6
PHP:5.6
问题:运行我的网站时,我会在5分钟后发生随机注销。这意味着当我启动计算机时,5分钟后会话被清除,我发现自己已经注销。 (随机时间)。这将持续一整天。 (随机退出)
将codeigniter中的会话设置为files
将其设置为database
会导致此问题(注销在24小时内发生)。
我的网页使用活动的ajax,它一直在点击codeigniter系统。我读到有一个Ajax Race条件可以导致它,但我注意到在阅读CI代码后,它与此命令有关
if ($this->_db->query("SELECT GET_LOCK('".$arg."', 300) AS ci_session_lock")->row()->ci_session_lock)
这似乎锁定了'在AJAX竞争条件期间,这会导致CI丢弃我的会话cookie信息(当然还会在$ this-> fail())调用下将其记录下来。我们正在使用RDS系统,所以我怀疑RDS上的GET_LOCK与真正的MYSQL系统上的GET_LOCK略有不同。
有人有想法/想法吗?是的,我尝试了sess_expiration
和sess_time_to_update
的大量组合,解决问题的唯一方法是返回files
。
由于我希望将来我的系统可以在多台服务器上运行,files
可能不合适(如果你知道CodeIgniter你知道为什么,这里解释得太复杂了。)
任何人都可以就RDS出现GET_LOCK问题的原因提出一些建议/答案吗?