<?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,所以就想了这种缓存更新的方式
分享到:
相关推荐
这个功能通常在文章列表或新闻滚动页面中出现,用户可以点击“加载更多”按钮来获取额外的文章内容。下面我们将详细探讨实现这一功能所需的PHP后端和JavaScript前端技术。 1. PHP(PHP Hypertext Preprocessor)是...
2. 安装:登录 Emlog 后台,进入“插件管理”页面,点击“上传插件”,选择刚刚解压的插件文件进行安装。 3. 配置:安装成功后,进入插件设置,根据需求配置静态化参数,如启用/禁用静态化、自定义静态文件路径等。 ...
7. **分享功能**:系统的核心是文章分享,可能利用社交媒体API(如微信、QQ、微博等)实现一键分享,并跟踪分享后的点击量,进而计算用户收益。 8. **支付接口**:为了实现收益结算,系统可能集成第三方支付接口,如...
在PHPCMS V9内容管理系统中,...在调用文章点击量之前,确保你的页面已经引入了jQuery库,因为我们将使用jQuery来实现动态加载和更新点击量。通常,你可以将jQuery.min.js文件添加到页面的部分,如下所示: ```html ...
在本篇文章中,我们将深入探讨如何利用EXTJS实现多文件上传,并且结合增删改查的功能。 首先,EXTJS中的`Ext.form.Panel`组件是实现多文件上传的基础。我们需要创建一个包含`Ext.form.FileField`的表单,这是EXTJS...
5.修正下载页生成静态后,不显示点击率. 6.修正修改下载会清空原来的周,日下载量BUG. 7.增加注册是否禁止邮箱重复注册 8.后台增加批量推送内容到辅栏目功能. 9.后台增加FLASH插件实现批量发图功能,上传时可实时...
5. **分享统计与计费**:系统需跟踪文章的分享情况,记录点击量,根据预设规则计算用户收益。 6. **支付接口集成**:与第三方支付平台(如微信支付)对接,实现用户收益的提现功能。 7. **安全防护**:防止恶意刷量...
总的来说,这个“PHP文章内容分页类”简化了开发过程,使得在PHP项目中实现高效且用户体验良好的分页功能变得轻松。只需正确配置参数,即可快速地在网页中生成美观的分页导航。通过深入理解这个类的工作机制,开发者...
2、全新安装需把upload文件夹里面的(注意,是里面的)子目录和文件全部上传到网站根目录下,然后在浏览器上打开网站,按提示选择数据库、填写数据库信息,最后点击安装按钮即可完成安装;3、本系统默认设置1小时内...
结合“EMLOG文章图片自动添加ALT描述插件”,用户不仅可以确保图片的SEO友好性,还能生成具有视觉吸引力的封面,从而提高文章在社交媒体上的点击率。 总的来说,这份“EMLOG文章图片自动添加ALT描述插件源码资源...
用户或管理员可以选择本地图片文件并上传至服务器,系统通常会将图片保存到指定的服务器目录,并生成对应的URL,以便在文章中引用。ASP脚本会处理文件上传的流程,包括文件类型的检查、大小限制以及防止恶意文件上传...
【php-selenium自动化测试包】是一个专为PHP开发者设计的工具,用于实现Web应用程序的自动化测试。这个包基于Selenium WebDriver,一个强大的跨浏览器测试框架,允许编程方式地控制多种浏览器,进行功能和兼容性测试...
TTPK游戏新闻文章系统依靠广告盈利站长首选,基于PHP MYSQL架构。单CSS,全开放代码。强大的后台管理,完美整合广告系统。...10、前台的广告,在后台的广告管理处可以更改,点击量拉上来之后,您就开始赚钱了。
本篇文章将详细探讨这两个关键知识点,包括单文件和多文件的上传以及单文件的下载。 首先,我们来看文件上传。文件上传是指用户通过网页或应用程序将本地计算机上的文件传输到服务器的过程。在Web开发中,通常使用...
在本项目中,我们看到一系列PHP文件,这表明该网站的后端主要是基于PHP语言构建的,这是一种广泛用于Web开发的服务器端脚本语言。PHP与HTML、CSS结合,可以创建动态、响应式的网页,提供丰富的用户体验。 `index....
本篇文章将深入探讨EXT如何与PHP配合,实现这些功能。 1. **图片上传** 在EXT中,我们可以使用`Ext.form.FileField`(旧版本中称为`Ext.ux.form.FileUploadField`)组件来创建一个文件上传表单。这个组件允许用户...
文件中的`memory_limit`值来调整PHP的最大内存使用量。 #### 六、总结 通过以上步骤,您已经成功地下载并安装了PHP环境,并了解了如何进行基本配置。PHP作为一种强大的服务器端脚本语言,在Web开发中发挥着重要...
举个例子,对于月度统计,判断当前时间戳是否与旧的时间戳在同一个月内,如果是,则月度点击量递增,否则重置为1。 ```php if($nowDateArray["year"]==$oldDateArray["year"]&&$nowDateArray["mon"]==$oldDateArray...
PHP可以通过计算总条数、每页显示数量来生成分页链接,并处理用户点击不同页码时的请求。 综上所述,这个“Blog.rar”项目涵盖了PHP基础语法、数据库操作、表单处理、会话管理、图像处理和文件上传等多个核心知识点...