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 14 PHP
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
Sep 24 PHP
php pack与unpack 摸板字符字符含义
Oct 29 PHP
PHP对象Object的概念 介绍
Jun 14 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
Apr 28 PHP
PHP 转义使用详解
Jul 15 PHP
php生成PDF格式文件并且加密
Jun 22 PHP
PHP实现QQ空间自动回复说说的方法
Dec 02 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
Sep 22 PHP
PHP 极验验证码实例讲解
Sep 29 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
Feb 08 PHP
Laravel如何创建服务器提供者实例代码
Apr 15 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
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
2007/02/09 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
JavaScript将页面表格导出为Excel的具体实现
2013/12/27 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
jQuery插件支持同一页面被多次调用
2016/02/14 Javascript
jQuery基础知识点总结(DOM操作)
2016/06/01 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
Js apply方法详解
2017/02/16 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
vue实现验证码按钮倒计时功能
2018/04/10 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
Python自定义主从分布式架构实例分析
2016/09/19 Python
基于python中的TCP及UDP(详解)
2017/11/06 Python
Php多进程实现代码
2018/05/07 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
pytorch 模型的train模式与eval模式实例
2020/02/20 Python
利用python实现平稳时间序列的建模方式
2020/06/03 Python
海淘母婴商城:国际妈咪
2016/07/23 全球购物
《永远的白衣战士》教学反思
2014/04/25 职场文书
经济国贸专业求职信
2014/06/18 职场文书
解除劳动合同证明书
2014/09/26 职场文书
银行求职信模板
2015/03/20 职场文书
永远是春天观后感
2015/06/12 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL
看完这篇文章获得一些java if优化技巧
2021/07/15 Java/Android