A-A+

EcShop自动删除访问统计释放记录表stats

2012年08月26日 PHP开源系统 评论 2 条 阅读 52 views 次

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

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

Update ecs_shop_config SET sort_order = 2 Where code = "visit_stats";
Insert INTO ecs_shop_config (id, parent_id, code, type, store_rang
e, store_dir, value, sort_order) VALUES
(247, 2, 'ipdel', 'select', '0,1,2,3,4,5', '', '0', 2);

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

$_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()结束前添加

/* 按系统设定删除访问统计 */
$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;
}
标签:

2 条留言  访客:2 条  博主:0 条

  1. 觉白

    😯 按照这样的方法操作后,首页出错了
    Notice: Undefined variable: ecs in D:\wamp\www\includes\lib_main.php on line 1181

    Fatal error: Call to a member function table() on a non-object inD:\wamp\www\includes\lib_main.php on line 1181
    但是,刷新一下就能打开首页了,很奇怪。

    • smiling

      变量未定义。

给我留言