自动删除访问统计解决ecs_stats表空间过大又一方法

ECSHOP开启站点访问统计后,随着时间的推移,访问记录表stats越来越大,直到空间爆满,网站瘫痪。ECSHOP的计划任务“浏览日志删除”需开 启“是否开启命令行调用计划任务”,不少朋友使用国内虚拟主机,虚拟主机对函数限制过多,计划任务形同摆设。本文讲解如何按系统设定自动删除访问统计,减少stats表的负载。

一、修改数据库,加入删除访问统计的时间配置的字段值”ipdel”

Oracle PL/SQL

1

2

3

UPDATE ecs_shop_config SET sort_order = 2 WHERE code = "visit_stats";

INSERT INTO ecs_shop_config (id, parent_id, code, type, store_range, store_dir, value, sort_order) VALUES

(247, 2, 'ipdel', 'sel ect', '0,1,2,3,4,5', '', '0', 2);

二、/languages/zh_cn/admin/shop_config.php中添加

PHP

1

2

3

4

5

6

7

8

$_LANG['cfg_name']['ipdel']= '自动删除访问统计';

$_LANG['cfg_range']['ipdel']['0'] = '永不删除';

$_LANG['cfg_range']['ipdel']['1'] = '7天前';

$_LANG['cfg_range']['ipdel']['2'] = '30天前';

$_LANG['cfg_range']['ipdel']['3'] = '90天前';

$_LANG['cfg_range']['ipdel']['4'] = '180天前';

$_LANG['cfg_range']['ipdel']['5'] = '360天前';

$_LANG['cfg_desc']['ipdel'] = '由前台用户触发,“站点访问统计”设为开启时才可使用此功能。';

三、/includes/lib_main.php中访问统计信息函数function visit_stats()结束前添加

PHP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

/* 按系统设定删除访问统计 */

$ipdel_day = 0;

switch ($GLOBALS['_CFG']['ipdel'])

{

case '0': // 永不删除

$ipdel_day = 0;

break;

case '1': // 7天前

$ipdel_day = 7;

break;

case '2': // 30天前

$ipdel_day = 30;

break;

case '3': // 90天前

$ipdel_day = 90;

break;

case '4': // 180天前

$ipdel_day = 180;

break;

case '5': // 360天前

$ipdel_day = 360;

break;

}

if($ipdel_day)

{

$deltime = gmtime() - $ipdel_day * 3600 * 24;

$ipdel_sql = "DELETE FROM " . $ecs->table('stats') .

"WHERE access_time < '$deltime'";

$db->query($ipdel_sql);

}

else

{

return;

}

取消这个插件,数据库写法是这样:

Oracle PL/SQL

1

delete from ecs_shop_config where code="ipdel";

"ecs_"是表前缀。

下面是两种解决ecs_stats数据库表大的办法:
一、直接关闭:网站后台--系统设置--商店设置--基本设置--站点访问统计:关
二、备份前删除表记录:

Oracle PL/SQL

1

delete from ecs_stats;

(0)

相关推荐