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程序61条面向对象分析设计的经验小结
Nov 12 PHP
PHP 年龄计算函数(精确到天)
Jun 07 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 PHP
php cookie使用方法学习笔记分享
Nov 07 PHP
php类中的各种拦截器用法分析
Nov 03 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
PHP实现适用于文件内容操作的分页类
Jun 15 PHP
PHP实现活动人选抽奖功能
Apr 19 PHP
php简单处理XML数据的方法示例
May 19 PHP
利用PHP实现开心消消乐的算法示例
Oct 12 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
May 12 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 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
PHP通过串口实现发送短信
2015/07/08 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
2014/06/12 Javascript
使用jQuery的attr方法来修改onclick值
2014/07/07 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
jQuery在线选座位插件seat-charts特效代码分享
2015/08/27 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
微信小程序之圆形进度条实现思路
2018/02/22 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
JavaScript使用localStorage存储数据
2019/09/25 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python实现类似jQuery使用中的链式调用的示例
2016/06/16 Python
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
Tensorflow累加的实现案例
2020/02/05 Python
学python最电脑配置有要求么
2020/07/05 Python
Canvas实现放大镜效果完整案例分析(附代码)
2020/11/26 HTML / CSS
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
英国儿童设计师服装和玩具购物网站:Zac & Lulu
2020/10/19 全球购物
学习十八大精神心得体会
2013/12/31 职场文书
淘宝中秋节活动方案
2014/01/31 职场文书
设备动力科岗位职责范本
2014/02/23 职场文书
英文演讲稿
2014/05/15 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
4S店客服专员岗位职责
2015/04/07 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
python数据处理之Pandas类型转换
2022/04/28 Python