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下escape解码函数的实现方法
Aug 08 PHP
小文件php+SQLite存储方案
Sep 04 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
Jul 22 PHP
php调用shell的方法
Nov 05 PHP
php常用的url处理函数总结
Nov 19 PHP
PHP将session信息存储到数据库的类实例
Mar 04 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
DEDECMS首页调用图片集里的多张图片
Jun 05 PHP
yii2实现根据时间搜索的方法
May 25 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
PHP页面输出搜索后跳转下一页的处理方法
Sep 30 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
May 19 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 cli模式学习(PHP命令行模式)
2013/06/03 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
2019/04/16 PHP
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
引用外部js乱码问题分析及解决方案
2013/04/12 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
JS数组去重的6种方法完整实例
2018/12/08 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
JS代码触发事件代码实例
2020/01/02 Javascript
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
python之wxPython菜单使用详解
2014/09/28 Python
python实现获取Ip归属地等信息
2016/08/27 Python
Python 的类、继承和多态详解
2017/07/16 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
微信跳一跳游戏python脚本
2020/04/01 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
Python序列类型的打包和解包实例
2019/12/21 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
Python同时迭代多个序列的方法
2020/07/28 Python
amazeui 验证按钮扩展的实现
2020/08/21 HTML / CSS
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
学生处主任岗位职责
2013/12/01 职场文书
小学生环保演讲稿
2014/04/25 职场文书
小组口号大全
2014/06/09 职场文书
工作骂脏话检讨书
2014/10/05 职场文书
坎儿井导游词
2015/02/09 职场文书
教师学期个人总结
2015/02/11 职场文书
导游词之南京栖霞山
2019/10/18 职场文书
Django集成富文本编辑器summernote的实现步骤
2021/05/31 Python