我有两个运行Codeigniter框架并使用负载平衡器的Web服务器,我想存储两个Web服务器的共享会话,而不是使用负载平衡器中的粘性会话。
我尝试使用ci数据库会话。几天来,连接非常好,直到突然开始显示缓慢的查询,如下所示:
SELECT GET_LOCK('59e30181bfafeae2d31394d621bab3cc4c401956', 300) AS ci_session_lock;
查询可能需要5到15秒的时间,这会使服务器变慢。
这是config.php中的会话配置
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 0; //expire when the browser is closed
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
有人经历过这样的经历吗?谢谢你。
答案 0 :(得分:0)
如果您遇到查询缓慢的问题,则需要将会话保存到文件而不是数据库中,这将保存您的多次查询缓慢请求。
示例:
$config['sess_driver'] = 'files'; // need to use files
要在CI中使用的存储驱动程序:文件,数据库,redis,memcached
然后定义tmp路径:
$config['sess_save_path'] = sys_get_temp_dir();
根据PHP手册,sys_get_temp_dir()
返回用于临时文件的目录路径
您还可以设置特定的文件夹以将会话在$config['sess_save_path']
中保存为:
$config['sess_save_path'] = 'session_folder'; // this will save session on root inside **session_folder** folder.