在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、前言 公司要做呼叫中心,呼叫中心为了防止骚扰,需要限制用户拨打电话的频率,比如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!");
|
2022-08-30
2022-08-17
2022-11-06
2022-08-17
2022-07-18
请发表评论