您当前的位置: 首页 > 网站编程 > PHP教程 > 利用Memcache来限制访问次数过快

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

作者:不详 来源:网络 发布时间: 2014-08-12 17:38 点击:
?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)

利用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) );

  ?>
分享到:
本文"利用Memcache来限制访问次数过快"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4