PHP优化的点击数统计代码




<?php
error_reporting(E_ALL);
$ROOT_PATH = '../';
include_once($ROOT_PATH . "include/config.php");
 
$update_time = 1800;//多长时间更新一次,单位是秒
 
$article_id = (isset($_GET['article_id']) && is_numeric($_GET['article_id']) && $_GET['article_id'] > 0) ? intval($_GET['article_id']) : 0;//文章的ID
if ($article_id > 0) {
 
    $filename = $ROOT_PATH . 'log/click_log.txt';
    $s = '';
    if (file_exists($filename)) {
        $content = file_get_contents($filename);
        $d_ary = array();
        if ($content) {
            $ary = explode("/n", $content);
            foreach ($ary as $line) {
                $data_ary = explode('|', $line);
                if (is_numeric($data_ary[0]) && is_numeric($data_ary[1])) {
                    $d_ary[$data_ary[0]] = $data_ary[1];
                }
            }
        }
        if (array_key_exists($article_id, $d_ary)) {
            $d_ary[$article_id] = $d_ary[$article_id]+1;//将当前的文章的点击数加1
        } else {
            $d_ary[$article_id] = 1;
        }
        foreach ($d_ary as $key => $val) {
            $s .= $key . '|' . $val . "/n";
        }
    } else {
        $s .= $article_id . '|1' . "/n";//这个是初始化记录文件
    }
 
    //写记录文件
    $fp = fopen($filename, "w");
//加入锁定
if (flock($fp, LOCK_EX)) { // 进行排它型锁定
    fwrite($fp, $s);
    flock($fp, LOCK_UN); // 释放锁定
}
    //fwrite($fp, $s);
    fclose($fp);
    @chmod($filename, 0777);
 
    $last_update = file_get_contents('../log/last_update.txt');//取上一次更新的时间
    $last_update = intval($last_update);
    if (($last_update + $update_time) < time()) {
 
        //以下是数据库连接操作,我用的是ADODB,你可以改成你自己的
        require_once("adodb.inc.php");
        $db = NewADOConnection("$DB_TYPE");
        $db->debug = true;
        $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
        if (!$db->Connect("$DB_HOST", "$DB_USER", "$DB_PASS", "$DB_DATABASE")) {
            exit('<a href="/">服务器忙,请稍候再访问</a>');
        }
 
        $content = file_get_contents($filename);
        $d_ary = array();
        if ($content) {
            $ary = explode("/n", $content);
            foreach ($ary as $line) {
                $data_ary = explode('|', $line);
                if (is_numeric($data_ary[0]) && is_numeric($data_ary[1])) {
                    $sql = "UPDATE article SET hits=hits+" . $data_ary[1] . " WHERE id=" . $data_ary[0];
                    $db->Execute($sql);
                }
            }
        }
        //点击数更新完了,将这个记录文件清空
        $fp = fopen($filename, "w");
        fwrite($fp, '');
        fclose($fp);
        @chmod($filename, 0777);
 
        //将最后一次更新时间改为当前时间
        $fp = fopen('../log/last_update.txt', "w");
        fwrite($fp, time());
        fclose($fp);
        @chmod('../log/last_update.txt', 0777);
   
        $db->Close();//关闭数据库连接
    }
    exit();
}
?>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHPStat是一款专业的网站流量统计,网站营销监控,网站用户行为,网站数据分析,互联网广告分析系统,为客户提供深入挖掘的网站流量交叉数据报告.在访客行为分析,网络营销分析和网站决策支持方面有独特的分析体系,为客户找到数据背后的真实有价值的东西,拿出可执行性建议. PHPStat网站流量统计系统 3.2 更新日志: [改变]软件界面,更稳重、直观 [增加]统计站点LOGO [增加]统计图表,分为柱状图、曲线图,自由切换 [改变]左边树性菜单显示方式 [改变]统计概况 [增加]热门标题 [增加]来路域名 [改变]关闭窗口,注销窗口的位置 [修正]省份,城市无法显示详情的错误 [修正]删掉用户后,无法删除其统计信息的错误 [修正]无法在Firefox浏览器登录的问题 [修正]menu.php无法传递参数问题 [修正]ALEAX排名问题 [修正]无法清空以及删除站点问题 [修正]IP数据表文件过大,无法自动安装的问题 [修正]当用户退出后,无法再次登录的问题 [修正]公开统计信息时,游客身份无法查看的问题 [改变]安装文件,把较大的数据文件分割成几个小文件,统计增加了检测安装环境的探针 [增加]限制游客身份不能修改系统信息的检查 [增加]版权信息的加密文件,测试版以及免费版本都无法修改 [增加]多日访问数据自动清理,转变为历史数据,以备查询 [增加]各个访问项目csv,xml,txt文件格式的数据导出 [增加]RSS信息订阅,简要描述访问情况 [增加]国家,省份,城市,地区/接入方式等历史数据明细"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值