arrow2 软件系统 arrow2 编程技术
PHP优化的点击数统计代码
PHP,点击数,统计代码
2007-10-07 17:16:18  

字体         收藏 推荐 打印 关闭


<?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();
}
?>

首先在log目录下创建last_update.txt
内容是 1155163400,(这是time()函数生成的时间)


click_log文件的内容是像下面这样的:
13136|44
13104|31
23509|32
11407|5
12141|29


第一个数字代表文章的ID,第二个数字代表累积的点击数


这样做,会提高程序的执行效率,无论是动态的PHP页面还是html里,以



<script src="click.php?article_id=333"></script>

这种方法的页面,都很有效.


这个一般用于统计文章等内容的点击数的,一般静态页里,像上面这样用的(可以把我上面的程序存成click.php),动态页里的话,可以把上面的代码做成一个包含文件,然后在你的文章中include进来,不过,要改一下这个PHP的代码,把article_id传进去.不多说了。


来自:不详   作者: 未知   责任编辑:admin | 返回顶部


用户评论
文章分类


名称 作者 内容 论坛

关键字
PHP,点击数,统计代码

google中搜索
相关文章
  · 谈谈PHP文章 ...
  · PHP 和Oracle 构 ...
  · PHP 应用程序 ...
  · 使用 PHP 快速 ...
  · php代码优化
  · php正则表达 ...
  · PHP 的安全错误
  · Linux下用Cronta ...
  · Windows定时自 ...
  · PHP删除非空 ...
  · PHP 截取字符串
  · 智能的PHP缩图 ...
  · PHP代码规范化
  · PHP缩略图类
  · php--session的问 ...
  · PHP+MySQL的分 ...
  · PHP中Basic Authe ...
  · 一个XML操作 ...
  · 如何解决php ...

最新发表
  ·  C# 打造个性浏览器
  ·  域名解析操作说明
  ·  W2K下安装MYSQL 4.0.21
  ·  Asp.net中执行Url重写
  ·  第三方Web Html Editor的使用
  ·  Iframe跨域问题.
  ·  垃圾邮件评判优化
  ·  如何对电子商务系统进行需求分析
  ·  IPS支付说明
  ·  谈谈PHP文章系统和SEO的关系