设为首页 收藏本站
查看: 858|回复: 0

[经验分享] PHP优化的点击数统计代码

[复制链接]
发表于 2017-4-2 11:45:36 | 显示全部楼层 |阅读模式
<?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();
}
?>

  Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2157506

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-359076-1-1.html 上篇帖子: Drupal模板变量 – page.tpl.php 下篇帖子: PHP弱数据类型的内部实现
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表