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生成带有雪花背景的验证码
Oct 09 PHP
用ADODB来让PHP操作ACCESS数据库的方法
Dec 31 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
Jul 07 PHP
php使用sql数据库 获取字段问题介绍
Aug 12 PHP
PHP模板引擎Smarty的缓存使用总结
Apr 24 PHP
php常用的url处理函数总结
Nov 19 PHP
支付宝接口开发集成支付环境小结
Mar 17 PHP
学习php设计模式 php实现建造者模式
Dec 07 PHP
浅谈PHP中的面向对象OOP中的魔术方法
Jun 12 PHP
PHP不使用内置函数实现字符串转整型的方法示例
Jul 03 PHP
stripos函数知识点实例分享
Feb 11 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 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函数 serialize()和unserialize()
2012/02/04 PHP
用PHP+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
mysql,mysqli,PDO的各自不同介绍
2012/09/19 PHP
PHP多个文件上传到服务器实例
2014/10/29 PHP
php实现获取文章内容第一张图片的方法
2014/11/04 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
2015/04/29 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
AngularJS与BootStrap模仿百度分页的示例代码
2018/05/23 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
iSlider手机端图片滑动切换插件使用详解
2019/12/24 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
Django Highcharts制作图表
2016/08/27 Python
Python3爬虫全国地址信息
2019/01/05 Python
python 采用paramiko 远程执行命令及报错解决
2019/10/21 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
2020/03/08 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
银行求职信范文
2014/05/26 职场文书
小学亲子活动总结
2014/07/01 职场文书
公司保洁员岗位职责
2015/02/13 职场文书
中秋节慰问信
2015/02/15 职场文书
党小组推荐意见
2015/06/02 职场文书
反腐倡廉心得体会2016
2016/01/13 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书
react中的DOM操作实现
2021/06/30 Javascript
JavaScript实现优先级队列
2021/12/06 Javascript
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android