分享
 
 
 

PHP优化的点击数统计代码

王朝php·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

<?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");

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>这种方法的页面,都很有效.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有