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 相关文章推荐
smarty section简介与用法分析
Oct 03 PHP
php中实现记住密码自动登录的代码
Mar 02 PHP
使用ThinkPHP+Uploadify实现图片上传功能
Jun 26 PHP
PHP中Session可能会引起并发问题
Jun 26 PHP
PHP+Mysql基于事务处理实现转账功能的方法
Jul 08 PHP
浅谈PHP中foreach/in_array的使用
Nov 02 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
Mar 04 PHP
PHP打印输出函数汇总
Aug 28 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
Mar 31 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
Mar 01 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 PHP
php让json_encode不自动转义斜杠“/”的方法
Apr 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
支持php4、php5的mysql数据库操作类
2008/01/10 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
javascript针对DOM的应用分析(二)
2012/04/15 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
为开发者准备的10款最好的jQuery日历插件
2014/02/04 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
jquery 实现两Select 标签项互调示例代码
2014/09/25 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
分享经典的JavaScript开发技巧
2015/11/21 Javascript
五种js判断是否为整数类型方式
2015/12/03 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
jQuery实现简单的Ajax调用功能示例
2019/02/15 jQuery
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
anaconda升级sklearn版本的实现方法
2021/02/22 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
网页切图的CSS和布局经验与要点
2015/04/09 HTML / CSS
俄罗斯药房连锁店:ASNA
2020/06/20 全球购物
实习生自我评价
2014/01/18 职场文书
医生进修自我鉴定
2014/01/19 职场文书
自荐信写法介绍
2014/01/25 职场文书
工程质量承诺书范文
2014/03/27 职场文书
贷款担保书范文
2014/05/13 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
董事长致辞
2015/07/29 职场文书