Ajax实现对静态页面的文章访问统计功能示例


Posted in PHP onOctober 10, 2016

本文实例讲述了Ajax实现对静态页面的文章访问统计功能。分享给大家供大家参考,具体如下:

众所周知,静态页面不仅速度快,而且对seo也有一定的帮助。前些日子,写了一帖关于《在SAE平台实现WordPress页面纯静态化至KVDB》。我自己使用了一段时间后,发现提速确实很明显。但是随之而来的一个问题就是,由于文章静态化后,页面并不会经过WordPress程序的处理,这样就导致了文章的访问量统计失效。当然,有一个叫做wp-postview的插件是可以解决这个问题的,但是我不是很喜欢插件,因为会拖慢整体的速度。所以这里就给出一个解决方案,就是使用Ajax来实现统计,同样是基于SAE平台的。

定义文章访问统计类

这个其实在我前面的帖子里面已经有提到过了KVDB+TaskQueue实现高效计数器,对这个做简单修改即可。由于不经过php处理,所以就不能使用队列服务来计数。同样定义计数类,并且放到网站根目录下:

$countkey=$_GET['key'];//获取要操作的计数key
if($countkey=="") exit;
if($_GET['action']=="add"){
  $cou=new counter($countkey);
  $cou->inc();//计数key对应的值加1
}elseif($_GET['action']=="get"){
  $cou=new counter($countkey);
  echo $cou->get();
}
class counter {
  private $kvdb;
  private $key;
  public function __construct($key){
    $this->kvdb=new CKvdb();
    $this->key=$key;
  }
  public function inc(){
    $num=$this->kvdb->get($this->key)+1;
    $this->kvdb->set($this->key,$num);
    return $num;
  }
  public function dec(){
    $num=$this->kvdb->get($this->key)-1;
    $this->kvdb->set($this->key,$num);
    return $num;
  }
  public function get(){
    $num=$this->kvdb->get($this->key);
    return intval($num);
  }
}
class CKvdb //这个类封装的kvdb操作。
{
  private $db;
  function __construct(){
    $this->db=new SaeKv();
    $this->db->init();
  }
  public function set($key,$value)
  {
    $this->db->set($key,$value);
  }
  public function get($key)
  {
    return $this->db->get($key);
  }
}

添加计数代码

在你的文章内容页面,添加如下的Ajax请求代码,该代码是基于jQuery的:

var keyTemp = $('#postTemp').text();
$.get('http://localhost/counter.php',{ action:'add',key:keyTemp });
$.get('http://localhost/counter.php',{ action:'get',key:keyTemp },function(data){
    $('#view').text(data+' Views');
});

keyTemp变量就是文章的别名,即存入KVDB中的键。我把该健存到一个隐藏的div身上,然后在使用Ajax的时候去获取该div的内容。Ajax中第一个get就是去访问counter.php计数类,并且带上参数,实现访问加1. 第二个get就是取访问值了,把取到的值放到相应的地方中去。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP常用函数小技巧
Sep 11 PHP
PHP 文件上传源码分析(RFC1867)
Oct 30 PHP
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
May 25 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
May 07 PHP
php实现通用的信用卡验证类
Mar 24 PHP
phpMyAdmin安装并配置允许空密码登录
Jul 04 PHP
变量在 PHP7 内部的实现(一)
Dec 21 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
Jun 22 PHP
SAE实时日志接口SDK用法示例
Oct 09 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
Nov 20 PHP
Laravel框架源码解析之模型Model原理与用法解析
May 14 PHP
php中yar框架实例用法讲解
Dec 27 PHP
PhpStorm terminal无法输入命令的解决方法
Oct 09 #PHP
PHP对象链式操作实现原理分析
Oct 09 #PHP
SAE实时日志接口SDK用法示例
Oct 09 #PHP
对PHP依赖注入的理解实例分析
Oct 09 #PHP
mac下多个php版本快速切换的方法
Oct 09 #PHP
Laravel中间件实现原理详解
Oct 09 #PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
Oct 09 #PHP
You might like
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
PHP中echo和print的区别
2014/08/28 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
2014/07/02 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
JavaScript事件发布/订阅模式原理与用法分析
2018/08/21 Javascript
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
python NumPy ndarray二维数组 按照行列求平均实例
2019/11/26 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
入党积极分子评语
2014/05/04 职场文书
连锁超市项目计划书
2014/09/15 职场文书
财务务虚会发言材料
2014/10/20 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书
公司酒会致辞
2015/07/30 职场文书