网站建设资讯详细

shop系统的The table ‘ecs_sessions’ is full 处理方法

发布于:2016-07-21   作者来源:成都电商系统开发 浏览:3651   


今天有客户的网站出了问题,联系我们(www.baijuyi.net)检查。

出错的完整提示是:MySQL server error report:Array ( [0] => Array ( [message] => MySQL Query Error ) [1] => Array ( [sql] => INSERT INTO `cc`.`ecs_sessions` (sesskey, expiry, ip, data) VALUES ('4b5c9bb5f23d7a1cebd1c1f4ad6682ee', '1270728928', '218.74.203.161', 'a:0:{}') ) [2] => Array ( [error] => The table 'ecs_sessions' is full ) [3] => Array ( [errno] => 1114 ) )

打开ecs_sessions表发现里面的数据有好几十页(每页1000)。那怪会提示满了!

但是很奇怪,为什么会存在这么多的数据在里面呢。不可能一天有这么多人在访问! 网站运行了好几个月了,没出现这种问题!

这个表是ecshop模拟session存储临时信息用。分析cls_session.php文件,发现自己将session过期日期写的好大,而最近网站的访问量持续增大,造成旧的数据不能及时的清除造成的。将过期时间缩短到一定时间,这个时间根据具体情况而定了。

var $max_life_time = 1000; // SESSION 过期时间

 

 

 

也许有一天,当你访问自己的网站的时,突然会出现下面错误提示:

MySQL server error report:Array ( [0] => Array ( [message] => MySQL Query Error ) [1] => Array ( [sql] => INSERT INTO `howjia`.`hsd_sessions` (sesskey, expiry, ip, data) VALUES (’6e29308d833f30446122f49e89023156′, ’1297816061′, ’114.249.213.6′, ‘a:0:{}’) ) [2] => Array ( [error] => The table ‘ecs_sessions’ is full ) [3] => Array ( [errno] => 1114 ) )

不要着急,下面告诉你如何解决:

根据错误提示判断是ecs_sessions表满了,打开phpmyadmin查看了一下表,是个memory表,数据有23800条,删除了一些数据看了一下还是有错误,并且数据项还是不变,由于表是内存表,我重启了一下mysql,网站恢复正常了

后来在网上搜了一下,这个问题可能是网站没有及时清理session内存表造成的。
也许通过程序设置可以解决这个问题。

程序解决方法是:

设置includes/cls_session.php里的var $max_life_time = 1000,

这个数值根据网站访问量的大小来定,访问越大可以设置的越小。