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 VS ASP
Oct 09 PHP
有关php运算符的知识大全
Nov 03 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
Jul 18 PHP
ThinkPHP中关联查询实例
Dec 02 PHP
PHP中使用curl入门教程
Jul 02 PHP
简单谈谈php浮点数精确运算
Mar 10 PHP
php metaphone()函数及php localeconv() 函数实例解析
May 15 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
Apr 07 PHP
windows环境下使用Composer安装ThinkPHP5
May 18 PHP
PHP配置ZendOpcache插件加速
Feb 14 PHP
PHP实现获取文件mime类型多种方法解析
May 28 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中防止SQL注入的最佳解决方法
2013/04/25 PHP
PHP输出XML到页面的3种方法详解
2013/06/06 PHP
php+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
javascript 读取图片文件的大小
2009/06/25 Javascript
javascript的渐进增强与平稳退化浅谈
2013/11/12 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
node.js中的fs.stat方法使用说明
2014/12/16 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
element-ui循环显示radio控件信息的方法
2018/08/24 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
微信小程序rich-text富文本用法实例分析
2019/05/20 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
用Python编写脚本使IE实现代理上网的教程
2015/04/23 Python
Python自动发邮件脚本
2017/03/31 Python
Python跨文件全局变量的实现方法示例
2017/12/10 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
Django缓存系统实现过程解析
2019/08/02 Python
Window10下python3.7 安装与卸载教程图解
2019/09/30 Python
python匿名函数的使用方法解析
2019/10/10 Python
如何基于Python批量下载音乐
2019/11/11 Python
解决keras使用cov1D函数的输入问题
2020/06/29 Python
匡威英国官网:Converse英国
2018/12/02 全球购物
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
农业资源与环境专业自荐信范文
2013/12/30 职场文书
餐饮总经理岗位职责
2014/03/07 职场文书
工程质量承诺书
2014/03/27 职场文书
优质服务活动实施方案
2014/05/02 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
俞敏洪一分钟演讲稿
2014/08/26 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
芙蓉镇观后感
2015/06/10 职场文书
会议主持词结束语
2015/07/03 职场文书
python神经网络编程之手写数字识别
2021/05/08 Python