// +---------------------------------------------------------------------- // | Date: 2020-9-28 10:55:00 // +---------------------------------------------------------------------- namespace bw; use traits\CacheTrait; /** 接口唯一调用锁类 * Class Common * @package app\bwmall\model */ class UrlLock { use CacheTrait; private $lock_key = null; private $lock_suffix = "-lock-suffix" ; private $time_out = 120; private $is_lock = false; public function __construct($lock_key=null,$lock_suffix="",$time_out=null,$err_msg=null) { if($lock_key)$this->lock_key = $lock_key; if($lock_suffix)$this->lock_suffix = $lock_suffix; if($time_out)$this->time_out = $time_out; if($err_msg)$this->setCacheLockErrorMsg($err_msg); } public function lock($bool=false){ try{ $this->getLock($this->lock_key,$this->lock_suffix,$this->time_out); }catch (\Exception|\Throwable $e){ $this->is_lock = false; if($bool){ return false; }else{ throw new UrlLockException($e->getMessage()); } } $this->is_lock = true; return $this; } public function free($bool=false){ try{ $this->freeLock($this->lock_key,$this->lock_suffix); }catch (\Exception|\Throwable $e){ if($bool){ return false; }else{ throw new UrlLockException($e->getMessage()); } } $this->is_lock = false; return $this; } public function hasLock(){ return $this->is_lock; } public function setErrorInfo($msg){ $this->setCacheLockErrorMsg($msg); } }