一、前言

  公司要做呼叫中心,呼叫中心为了防止骚扰,需要限制用户拨打电话的频率,比如30s只能点击一次。这样的需求是通过redis来实现的。

二、具体实现

<?php

class ResourceLock
{
private $lock_key = 'cxxxx:%s'; private static $redis_instance; public function __construct()
{
self::$redis_instance = Redis::connection('lock');
} private function getKey($resource_unique_name)
{
return str_replace('%s', $resource_unique_name, $this->lock_key);
} /**
* 检查资源锁
* @param string $resource_unique_name
* @param int $lock_second 秒
* @return array|bool
*/
public function checkLock($resource_unique_name)
{
$lock_key = $this->getKey($resource_unique_name);
$locked = self::$redis_instance->get($lock_key);
if ($locked) {
return false;
}
return true;
} /**
* 检查资源锁
* @param string $resource_unique_name
* @param int $lock_second 秒
* @return array|bool
*/
public function setLock($resource_unique_name, $lock_second = 300)
{
$lock_key = $this->getKey($resource_unique_name);
// 数据加锁
self::$redis_instance->setex($lock_key, $lock_second, "1");
} /**
* 释放锁资源
* @pastring $lock
* @return bool
*/
public function unlock($resource_unique_name)
{
$lockKey = $this->getKey($resource_unique_name);
return self::$redis_instance->del($lockKey);
}
}

三、redis的方法

$redis->expire($key, 60); //保持跟自然间隔时间相同 会自动延时60秒

四、收获

<?php
echo str_replace("world","Shanghai","Hello world!"); Hello Shanghai!
?>

php实现频率限制的更多相关文章

  1. 在thinkphp中,写的博文标签多对多关系的标签频率统计算法

    常常看到别人的博客里面,或者网站里面有这样随机颜色,但字体大小与标签出现频率有关的标签云,于是自己就想写一个.至于颜色的随机显示,那就很简单了,这里就不列代码. 因为正在学thinkphp,所以数据查 ...

  2. pwm 占空比 频率可调的脉冲发生器

    module xuanpin #(parameter N=25)(clk,clr,key_in_f,key_in_z,f_out);input clk,clr,key_in_f,key_in_z;ou ...

  3. [LeetCode] Sort Characters By Frequency 根据字符出现频率排序

    Given a string, sort it in decreasing order based on the frequency of characters. Example 1: Input: ...

  4. java重置定时器频率

    public class BallUtil { public static Timer fisTimer ; public static void fisStartBall(){ long first ...

  5. CDCE913产生任意频率

    1,上TI官网下载CDCE913的datasheet和配置软件clock Pro.如果只需要配置CDCE913成某一个固定频率,那么用clock Pro可以很方便快捷. TI的初衷应该就是通过I2C配 ...

  6. ORACLE查看SQL的执行次数/频率

    在ORACLE数据库应用调优中,一个SQL的执行次数/频率也是常常需要关注的,因为某个SQL执行太频繁,要么是由于应用设计有缺陷,需要在业务逻辑上做出优化处理,要么是业务特殊性所导致.如果执行频繁的S ...

  7. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 访问频率限制功能实现、防止黑客扫描、防止恶意刷屏

    很多软件组件,大家都能想到了,大家也能做出来,但是成熟稳定.可靠.易用.功能全面,可信任,可相信,可开源就不是很容易,需要树立良好的口碑才可以. 1:往往会有黑客,进行撞库挖掘漏洞,很多系统的账户有可 ...

  8. web系统访问频率限制

    无论是spring mvc还是struts,都可以为controller或者aciton执行前,增加拦截器. 通过拦截器中的逻辑控制,可以实现访问频率的限制. 首先构造访问频率数据类 class Fr ...

  9. 由于某IP大频率提交评论导致服务器宕机

    早上突然收到dnspod的宕机通知(好久没收到了,有点手足无措). 服务器在上午10:40时达到85%.uptime显示cpu利用率达到35.不宕才怪. 按照之前的经验,应该是触发一个特别耗CPU的处 ...

  10. NET出现频率非常高的笔试题

    又到了金三银四的跳槽季,许多朋友又开始跳槽了,这里我简单整理了一些出现频率比较高的.NET笔试题,希望对广大求职者有所帮助. 一..net基础 1.  a=10,b=15,请在不使用第三方变量的情况下 ...

随机推荐

  1. linux常用命令:wget 命令

    wget命令用来从指定的URL下载文件.wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕.如果是服务器打断下 ...

  2. python xml childNodes,childNodes[1].childNodes[0].data例子

    xml: <?xml version='1.0' encoding='utf-8'?><!--this is a test about xml--><booklist t ...

  3. JSP输出HTML时产生的大量空格和换行的去除方法

    在WEB应用中,如果使用jsp作为view层的显示模板,都会被空格/空换行问题所困扰.     这个问题当年也困扰了我比较长的时间.因为在jsp内使用的EL标签和其他标签时,会产生大量的空格和换行符. ...

  4. (一)MySQL登录与退出

    mysql登陆: win+r输入cmd按enter进入命令行界面: > mysql -uroot -p -P3306 -h127.0.0.1 > 输入密码后按回车 mysql退出: mys ...

  5. 解决mysql的Too many connections

    解决: /etc/my.cnf vim编辑 添加 max_connections= wait_timeout= 然后执行code service mysqld reload service mysql ...

  6. 20145314郑凯杰《网络对抗技术》PE文件病毒捆绑(插入捆绑)的实现

    20145314郑凯杰<网络对抗技术>PE文件病毒捆绑(插入捆绑)的实现 一.本节摘要 简介:每个应用程序内部都有一定的空间(因为文件对齐余留的00字段)可以被利用,这样就可以保证被插入的 ...

  7. C#预处理器指令【转】

    本文转载自:http://www.cnblogs.com/miffylf/p/4005223.html C#有许多名为预处理器指令的命令.这些命令从来不会转化为可执行代码中的命令,但会影响编译过程的各 ...

  8. 用 C# 计算 与 java 一致的unix时间戳 (长时间整形 如:1476956079961)

    背景: 调用java提供接口,需要长时间整形作为验证. 预备知识: 1. java 的 System.currentTimeMillis() 计算的长整型,是从1970年1月1日开始,截止当前的毫秒数 ...

  9. 初探 Yii2 的测试模式 index-test.php

    有没有发现高级版每个应用的 web 目录下有两个入口文件,一个index.php 一个 index-test.php通过init.bat可以切换到调试模式和产品模式,这两个模式相信同学们都很熟悉了,那 ...

  10. Python CSV Reader/Writer 例子--转载

    CSV(comma-separated values) 是跨多种形式导入导出数据的标准格式,比如 MySQL.Excel. 它以纯文本存储数和文本.文件的每一行就代表一条数据,每条记录包含了由逗号分隔 ...