php中用memcached实现页面防刷新功能


Posted in PHP onAugust 19, 2014

有个新需求要加上去,防止用户频繁刷新页面。具体需求是当用户在一分钟之后内请求指定的页面超过100次,就直接拒绝请求。仔细分析后发现这个功能用memcache来做最方便:

1、以用户IP和被请求的文件名作为KEY值。

2、以memcached的方法increment()来自增记录用户访问次数,increment()是原子性增加,准确。

3、设置set()时指定过期时间为60s,这样就统计一分钟的访问次数。

于是写了个函数放在项目的初始化文件中调用,函数内容如下:

function requestCount(){ 

 $patharr = pathinfo($_SERVER['PHP_SELF']);

 $filename = explode('?',$patharr['basename']);//获取当前文件名

 if( in_array($filename['0'],array('index.php','login.php','password.php')) ){

 global $memcache;

 $clientip = get_client_ip();

 //使用长整型IP和文件名生成KEY

 $ipkey = 'C'.sprintf("%u", ip2long( $clientip )). $filename['0'] ;

 if( $visitCount = $memcache->get($ipkey) ){  

      if($visitCount == 100){

        die('<h1>Please don\'t refresh your page!</h1>');

      }else{

        $memcache->increment($ipkey);

      }  

 }else{

    $memcache->set($ipkey,1,0,60);

 }

 }

}
PHP 相关文章推荐
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
Jun 18 PHP
浅析php数据类型转换
Jan 09 PHP
基于递归实现的php树形菜单代码
Nov 19 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 PHP
php curl请求信息和返回信息设置代码实例
Apr 27 PHP
php实现paypal 授权登录
May 28 PHP
PHP获取文件行数的方法
Jun 10 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
Jun 17 PHP
ajax+php控制所有后台函数调用
Jul 15 PHP
PHP简单的MVC框架实现方法
Dec 01 PHP
php基于CodeIgniter实现图片上传、剪切功能
May 14 PHP
PHP用户注册邮件激活账户的实现代码
May 31 PHP
php中Session的生成机制、回收机制和存储机制探究
Aug 19 #PHP
php中多维数组按指定value排序的实现代码
Aug 19 #PHP
PHP获取一个字符串中间一部分字符的方法
Aug 19 #PHP
php数组索引的Key加引号和不加引号的区别
Aug 19 #PHP
zend framework框架中url大小写问题解决方法
Aug 19 #PHP
深入理解PHP中的global
Aug 19 #PHP
PHP Session机制简介及用法
Aug 19 #PHP
You might like
高性能PHP框架Symfony2经典入门教程
2014/07/08 PHP
PHP中比较时间大小实例
2014/08/21 PHP
PHP7.0版本备注
2015/07/23 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
JavaScript中最容易混淆的作用域、提升、闭包知识详解(推荐)
2016/09/05 Javascript
vue-prop父组件向子组件进行传值的方法
2018/03/01 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
python教程之用py2exe将PY文件转成EXE文件
2014/06/12 Python
Python urls.py的三种配置写法实例详解
2017/04/28 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
python实现Floyd算法
2018/01/03 Python
PyQt实现界面翻转切换效果
2018/04/20 Python
python中实现字符串翻转的方法
2018/07/11 Python
对python判断是否回文数的实例详解
2019/02/08 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
python 调试冷知识(小结)
2019/11/11 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
如何定义一个可复用的服务
2014/09/30 面试题
药剂专业个人求职信范文
2014/04/29 职场文书
2014年行风建设工作总结
2014/12/01 职场文书
呐喊读书笔记
2015/06/30 职场文书
离婚协议书范文2016
2016/03/18 职场文书