文章id 文章标题点击量php,php如何实现文章点击数

c0e6fe836f2e83832ba1d0aced54c831.png

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('服务器忙,请稍候再访问');

}

$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里,以

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

这个一般用于统计文章等内容的点击数的

一般静态页里,像上面这样用的(可以把我上面的程序存成click.php)

动态页里的话,可以把上面的代码做成一个包含文件,然后在你的文章中include进来,不过,要改一下这个PHP的代码,把article_id传进去.不多说了,PHP程序员都会知道怎么做,不懂程序的话,我讲太多也没用

前些日子因为我服务器上的mysql进程里,经常看见一大堆的update,所以就想了这种缓存更新的方式

更多相关技术文章,请访问PHP中文网!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值