繁体   English   中英

Codeigniter数据库会话GET LOCK

[英]Codeigniter database session GET LOCK

我有两个运行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;

有没有人遇到过这样的经历? 之前谢谢。

如果遇到慢查询问题,则需要将会话保存到文件而不是数据库中,这将保存慢查询和多次查询请求。

例:

$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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM