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 相关文章推荐
使用Xdebug调试和优化PHP程序之[1]
Apr 17 PHP
让你成为更出色的PHP开发者的10个技巧
Feb 25 PHP
PHP模块 Memcached功能多于Memcache
Jun 14 PHP
php array_map()数组函数使用说明
Jul 12 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 PHP
php实现的短网址算法分享
Jun 20 PHP
php基于GD库画五星红旗的方法
Feb 24 PHP
Yii2创建控制器(createController)方法详解
Jul 23 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
Nov 25 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
PHP 爬取网页的主要方法
Jul 13 PHP
imagettftext() 失效,不起作用
Mar 09 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实现框架(一)
2006/10/09 PHP
COM in PHP (winows only)
2006/10/09 PHP
关于document.cookie的使用javascript
2008/04/11 Javascript
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
Javascript 自定义类型方法小结
2010/03/02 Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
2010/04/20 Javascript
jQuery EasyUI NumberBox(数字框)的用法
2010/07/08 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
如何用RxJS实现Redux Form
2018/12/29 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
2018/03/22 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
python多线程抽象编程模型详解
2019/03/20 Python
Python中字符串与编码示例代码
2019/05/20 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
python如何求100以内的素数
2020/05/27 Python
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
大学生蛋糕店创业计划书
2014/01/13 职场文书
广告词串烧
2014/03/19 职场文书
新闻报道策划方案
2014/06/11 职场文书
2015年人事工作总结范文
2015/04/09 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang
python基础之模块的导入
2021/10/24 Python
js中Map和Set的用法及区别实例详解
2022/02/15 Javascript
Java实现带图形界面的聊天程序
2022/06/10 Java/Android