我有一个使用Codeigniter 3.1.11和jQuery ajax构建的聊天应用程序。我正在使用数据库会话驱动程序。本地主机中没有问题,但是当我将其移至实时服务器并且随着访问用户数量的增加时,会话存在很多问题。问题之一是它为单个用户创建多个会话ID(这是在浏览器中打开页面时的意思,它在ci_sessions表中最少创建约4至6个ID,有时甚至更多)。有时我会丢失会话值(例如在每个ajax调用中都将其重置)。而且我在日志文件中也收到以下错误:
ERROR - 2020-02-04 13:41:30 --> Query error: Deadlock found when trying to get lock; try restarting transaction - Invalid query: UPDATE `ci_sessions` SET `timestamp` = 1580823690 WHERE `id` = 'e0b75ac252a680d3ec6ad1b8589f4836b89f8bf5'
我的实时服务器信息:
Apache版本:2.4.41,PHP版本:7.3.13,MySQL版本:10.3.18-MariaDB,操作系统:linux
[发布时,我的ci_sessions表包含478个唯一ip地址和5105个条目。请任何人帮助解决此问题。
根据您的有限信息,我只能建议您更新以下内容
config['sess_match_ip'] = true;
这应该为同一用户解决您的多个会话。