ECShop The table ‘ecs_sessions’ is full 的处理方法

  • 2015-3-5 22:07
  • PHP二次开发网
  • 阅读(4595)
  • 评论(0)
  • 来源:互联网
  • 摘要: 完整提示MySQL server error report:Array ( = Array ( = MySQL Query Error ) = Array ( = INSERT INTO `cc`.`ecs_sessions` (sesskey, expiry, ip, data) VALUES ('4b5c9bb5f23d7a1cebd1c1f4ad6682ee', '12707 ...
    完整提示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 过期时间

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

    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,

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



    PHP技术交流QQ群:422137578

    除非注明,文章均为 PHP二次开发 原创,转载请注明本文地址:http://www.php2.cc/article-1781-1.html

    相关阅读

    最新评论

    用户名:  *

    邮 箱:  *

    网 址: 注意加上“http://”哦!