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

    發布時間:2018-06-07

    1725

    閱讀量

    完整提示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,

    這個數值根據網站訪問量的大小來定,訪問越大可以設置的越小。