<?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传进去.不多说了,PHP程序员都会知道怎么做,不懂程序的话,我讲太多也没用
前些日子因为我服务器上的mysql进程里,经常看见一大堆的update,所以就想了这种缓存更新的方式
分享到:
相关推荐
5.修正下载页生成静态后,不显示点击率. 6.修正修改下载会清空原来的周,日下载量BUG. 7.增加注册是否禁止邮箱重复注册 8.后台增加批量推送内容到辅栏目功能. 9.后台增加FLASH插件实现批量发图功能,上传时可实时...
2、全新安装需把upload文件夹里面的(注意,是里面的)子目录和文件全部上传到网站根目录下,然后在浏览器上打开网站,按提示选择数据库、填写数据库信息,最后点击安装按钮即可完成安装;3、本系统默认设置1小时内...
TTPK游戏新闻文章系统依靠广告盈利站长首选,基于PHP MYSQL架构。单CSS,全开放代码。强大的后台管理,完美整合广告系统。...10、前台的广告,在后台的广告管理处可以更改,点击量拉上来之后,您就开始赚钱了。
重要说明: ****************** 转换步骤 ****************** ...对于数据量比较大的,推荐使用文章系统模型。 2.新闻系统模型支持内容(newstext)搜索;而文章系统模型不支持内容(newstext)搜索。
实现代码与界面的分离,支持模板切换。程序提供多个大方美观的模板提供下载,用户也可以定制自己喜欢的样式。 5. 安全的架构 对用户的输入都进行严格的安全控制。对各种恶意的注入、跨站攻击等都有防御手段。 6....
点击Next进入目录和文件添加界面,因为我们只是测试一个文件,所以点Add File将test.php添加进来,再点击Finish(完成)即可生成项目。 这时,Zend Guard会自动打开新建立的项目,在界面的左边列出项目中的...
TTPK游戏新闻文章系统的依靠广告盈利站长首选。...10、前台的广告,在后台的广告管理处可以更改,点击量拉上来之后,您就开始赚钱了。如果有不明白的地方可以联系客服QQ1903860150或加入我们的群29094625
本文档是基于维客(wiki )技术的,所以你可以随时更新到最新版本,点击这里查看最新内容here 或者下载最新版本文档点击此处下载量新.chm 帮助文件. 使用维客方式的目的是为了能使任何人都可以不断完善、更新此文档,...
1.修正淘宝TOP平台BUG引起的部分商品点击“立即到淘宝购买”跳S8问题。 2.修正选择价格范围后翻页丢失的BUG。 3.后台关键词导航里,增加“关键词随机数”设置,如果设置不为0,将随机取关键词。 4.后台高级设置里...
5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...
如果每次用户点击动态链接的时候都会对服务器发送数据查询的要求,对于一个访问量可能达百万千万级别的网站来说 这无疑是服务器一个大大的负担,所以把动态数据转换成静态html页面就成了节省人力物力的首选因为此前...
9.首页分类块增加点击量和tag标签(完成) 10.相关文章推荐(完成) 11.修改空留言也能提交(完成) 12.2月15号优化代码(完成) 13.合并后台导航栏/修改广告/窗帘管理(完成) 14.修复留言板不能倒计时的bug...
1.10 如何去除ecshop产品详细页产品点击率 14 1.11 首页、头部、底部模板文件名称 14 1.12 网站关闭了注册,如何修改“该网店暂停注册”字样 14 1.13 收货人详细信息js弹出框的提示脚本在哪个文件 14 1.14 网站公告...
2、全新安装需把upload文件夹里面的(注意,是里面的)子目录和文件全部上传到网站根目录下,然后在浏览器上打开网站,按提示选择数据库、填写数据库信息,最后点击安装按钮即可完成安装; 3、本系统默认设置1小时内...
# 复制配置文件,并修改配置文件,修改数据名称和密码,启动redis,配置redis密码(文章点击量使用redis统计) cp .env.example .env # 生成key php artisan key:generate # 生成jwt-key php artisan jwt:secret # ...
7.http://你的域名/index.php/PublicM/index/checkdir 为 php文件的bom头扫描删除工具,用于修复文件,请注意设置php文件最大执行等待时间 8.内容分类 模型的 【绑定内容模型id】这个字段最好别删,这样可以在内容...
我们点击生成的.exe 文件,首 先可能显示“没有找到mingwm10.dll,因此这个应用程序未能启动。重新安装 应用程序可能会修复此问题。”表示缺少mingwm10.dll 文件。 解决这个问题我们可以将相应的.dll 文件放到系统 ...
盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很...
■ 主题很多功能都需要添加自定义栏目实现,如果在编辑页面上无自定义栏目设置面板,可以点击右上“显示选项”按钮,在显示下列项目中,勾选“自定义栏目”。 ■ 公告、相册、视频采用自定义文章发布类型功能,这是...
实现代码与界面的分离,支持模板切换。程序提供多个大方美观的模板提供下载,用户也可以定制自己喜欢的样式。 5. 安全的架构 对用户的输入都进行严格的安全控制。对各种恶意的注入、跨站攻击等都有防御手段。 6. ...