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读取网页文件内容的实现代码(fopen,curl等)
Jun 23 PHP
浅谈php扩展imagick
Jun 02 PHP
ThinkPHP3.1新特性之内容解析输出详解
Jun 19 PHP
ThinkPHP模板Switch标签用法示例
Jun 30 PHP
PHP实现获取图片颜色值的方法
Jul 11 PHP
PHP中常用的输出函数总结
Sep 22 PHP
php实现TCP端口检测的方法
Apr 01 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
基于PHP实现栈数据结构和括号匹配算法示例
Aug 10 PHP
php实现数组重复数字统计实例
Sep 30 PHP
php实现银联商务公众号+服务窗支付的示例代码
Oct 12 PHP
Swoole扩展的6种模式深入详解
Mar 04 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
我的论坛源代码(九)
2006/10/09 PHP
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
Yii框架的路由配置方法分析
2019/09/09 PHP
javascript 闭包疑问
2010/12/30 Javascript
js 幻灯片的实现
2011/12/06 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
在Django的模板中使用认证数据的方法
2015/07/23 Python
利用python求相邻数的方法示例
2017/08/18 Python
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
浅述python中深浅拷贝原理
2018/09/18 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
物流经理自我评价
2013/09/23 职场文书
高二英语教学反思
2014/01/19 职场文书
小学岗位竞聘方案
2014/01/22 职场文书
高一物理教学反思
2014/01/24 职场文书
旅游专业毕业生自荐书
2014/06/30 职场文书
珍惜资源的建议书
2014/08/26 职场文书
代收款委托书范本
2014/10/01 职场文书
部门2014年度工作总结
2014/11/12 职场文书
担保书格式范文
2015/09/22 职场文书
Pandas数据类型之category的用法
2021/06/28 Python