利用Memcache来限制访问次数过快

 <?php

$limit = 50;
$seconds = 60;
$block_for_seconds = 300;

$status = ‘OK’;

$memcache = new Memcache;
$memcache->connect(‘localhost’, 11211);

$ip = $_SERVER['REMOTE_ADDR'];

$r = $memcache->get($ip, array(‘c’, ‘t’));

$c = 1; // count
$init_time = time();
if($r) {
$s = $r[3]; // status
$c = $r[0]+1;
$init_time = $r[1];
if($s == ‘TOO_MANY_REQUESTS’) {
$d = time()-$r[1]; // time since block
if($block_for_seconds-$d > 0) { // still blocked
die(‘Flood detected!! You are going to wait ‘.($block_for_seconds-$d).’ and try again.’);
} else { // block is over
$status = ‘OK’;
$init_time = time();
$c = 0;
}
}

$new_time = time();
if($c > $limit) { // check if happened within a minute
$time_elapsed = $new_time – $init_time;
if($time_elapsed < $seconds) {
$status = ‘TOO_MANY_REQUESTS’;
}
print “time elapsed: $time_elapsed, count:$c”;
$c = 0;
$init_time = time();
}
}
print_r($r);
$memcache->set($ip, array($c, $init_time, $new_time, $status) );
?>

时间: 2024-10-27 06:52:05

利用Memcache来限制访问次数过快的相关文章

PHP利用cookie进行访问次数统计代码

面这段代码是利用cookie实现的访问次数的统计. <?php global $count; $count=1; if(!isset($_COOKIE["visittime"])){ setcookie("visittime",date("y-m-d H:i:s")); setcookie("visitcount",1); echo "欢迎你第一次访问网站!"; } else{ setcookie(&

利用cookie 实现访问次数统计代码

本教程举了两个实例说明利用cookie实现访问次数统计的代码,包括有php教程 js 两种方法 <?php global $count; $count=1; if(!isset($_COOKIE["visittime"])){ setcookie("visittime",date("y-m-d H:i:s")); setcookie("visitcount",1); echo "欢迎你第一次访问网站!"

PHP+Memcache实现wordpress访问总数统计(非插件)_php实例

以前写过一篇博文,利用 PHP 和 Memcache 实现网站,以下链接查看:http://www.jb51.net/article/51825.htm 今天就把该功能用到 wordpress 中,并实现把访问次数保存到数据库中. MySQL 语句 首先在参数表中,添加访问次数的默认数据 // 获取所有浏览次数 function get_all_visit_number() { $mc = new Memcache (); // 使用wordpress自带wpdb类 global $wpdb;

用ASP技术得到主页被访问次数的三种方法

访问 用ASP技术得到主页被访问次数的三种方法             华中理工大学自动控制工程系  周茜 田忠和    ASP 是Microsoft Active Server Pages 的缩写,即动态服务器主页. 它是服务器端脚本编写环境,在Web服务器上解释脚本,可以组合HTML页.脚本命令和ActiveX组件来创建动态.交互式.高效率的 Web 页和基于 Web 的功能强大的服务器应用程序.ASP 可以在Microsoft 的任何 Web服务器上发布各种动态数据,而且ASP应用程序很容

php简单自主开网页访问次数计数器代码

这里是我们用php教程简单自主开网页访问次数计数器代码偌,是一款基于文件的图形计数器范例代码,会用到的文件用 num.txt //累计访问次数 vist.php//测试文件 count.php//统计访问次的核心程序,因为它会把文字转换成gif图片,并且输出到浏览器. <HTML> <HEAD> <TITLE>图形计数器范例</TITLE> </HEAD> <BODY> 您好,您是第<img src="ImgOutFi

巧用JavaScript记录网站访问次数

javascript|访问 我们知道Cookie是记录访问你站点的用户的信息,它驻留在用户的硬盘上,如果该用户再次返回你的站点,则该cookie就会被一起发回到你的服务器中,便于你统计和处理重复到访者的信息.在IE4和NS4两个浏览器中,都提供了对Coo kie的支持,并且允许我们用JavaScript或者VBScript去操作它们. 为了简单了解一下Cookie读写的原理,请看以下例子. 写Cookie: < script > function setCookie() //建立设定Cooki

利用ASP.NET来访问Excel文档

asp.net|excel|访问|来访 利用ASP.NET来访问Excel文档 Excel是Microsoft公司的Office套件中的一种软件,他主要用来处理电子表格.Excel以界面友好.处理数据迅速等优点获得广大办公人员的欢迎.所以很多文档就以Excel的形式保存了下来.对于程序设计人员,在程序设计中,我们往往要访问Excel文件来获得数据.但由于Excel文件不是标准数据库,所以用程序语言来访问他就比较困难. ASP.NET是Microsoft公司极力推荐的一个产品,作为.NET Fra

nginx限制同一个IP短时间内的访问次数

  如何设置能限制某个IP某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的ddos攻击的时候.其中CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一直到宕机崩溃. cc攻击一般就是使用有限的ip数对服务器频繁发送数据来达到攻击的目的,nginx可以通过HttpLimitReqModul和HttpLimitZoneModule配置来限制ip在

memcached-使用memcache和直接访问数据库的性能比较

问题描述 使用memcache和直接访问数据库的性能比较 20C 我今天在VMWare搭建的CentOS系统上用apache ab对一个URL发起压力测试.发现用memcache还不如直接访问数据库速度快一些. memcache几乎每次都能命中,大约每秒处理400个请求. 直接访问mysql大约每秒处理600个请求. 我用stats和stats slabs命令查看memcached的执行情况,也没发现什么状况.执行情况我放在附件中. 请问这是什么原因? 解决方案 数据库性能比较