php文章缓存,PHP给文章点击统计加个缓存

[asp]代码库<?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();

}

?>

694748ed64b9390909c0d88230893790.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值