zoukankan      html  css  js  c++  java
  • php实现频率限制

    一、前言

      公司要做呼叫中心,呼叫中心为了防止骚扰,需要限制用户拨打电话的频率,比如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!
    ?>
  • 相关阅读:
    flask 第三方组件
    Flask基础与进阶
    odoo10 视图
    odoo10 ORM操作
    odoo10基础
    字典的setdefault方法
    redis常用操作
    git常用命令与操作
    vue_axios
    odoo 权限设置
  • 原文地址:https://www.cnblogs.com/cjjjj/p/9963145.html
Copyright © 2011-2022 走看看