设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
快捷导航
登录
注册
论坛首页
BBS
建站模版
微站设计
虚拟主机
企业邮箱
博客日志
Blog
搜索
搜索
搜索
热搜
长春
优惠
活动
做网站
本版
帖子
用户
本版
帖子
用户
请
登录
后使用快捷导航
没有帐号?
立即注册
道具
勋章
任务
留言板
设置
我的收藏
退出
时时商务社区
»
论坛首页
›
建站资源
›
建站技术
›
php中用memcached实现页面防刷新功能
返回列表
查看:
1441
|
回复:
0
php中用memcached实现页面防刷新功能
[复制链接]
yj1281
当前离线
积分
7391
2487
主题
2487
帖子
7391
积分
论坛元老
论坛元老, 积分 7391, 距离下一级还需 9992608 积分
论坛元老, 积分 7391, 距离下一级还需 9992608 积分
积分
7391
发消息
电梯直达
楼主
发表于 2018-2-14 05:55:23
|
只看该作者
|
倒序浏览
|
阅读模式
有个新需求要加上去,防止用户频繁刷新页面。具体需求是当用户在一分钟之后内请求指定的页面超过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('Please don\'t refresh your page!');
}else{
$memcache->increment($ipkey);
}
}else{
$memcache->set($ipkey,1,0,60);
}
}
}
您可能感兴趣的文章:
php模块memcache和memcached区别分析
PHP模块 Memcached功能多于Memcache
php将session放入memcached的设置方法
linux下安装php的memcached客户端
php中操作memcached缓存进行增删改查数据的实现代码
php扩展memcached和memcache的安装配置方法
PHP模块memcached使用指南
PHP内存缓存Memcached类实例
php下Memcached入门实例解析
分享到:
QQ好友和群
QQ空间
腾讯微博
腾讯朋友
收藏
0
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
用户反馈
客户端