Revision 148 | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace Illuminate\Console\Scheduling;use Illuminate\Contracts\Cache\Factory as Cache;use Illuminate\Contracts\Cache\LockProvider;class CacheEventMutex implements EventMutex, CacheAware{/*** The cache repository implementation.** @var \Illuminate\Contracts\Cache\Factory*/public $cache;/*** The cache store that should be used.** @var string|null*/public $store;/*** Create a new overlapping strategy.** @param \Illuminate\Contracts\Cache\Factory $cache* @return void*/public function __construct(Cache $cache){$this->cache = $cache;}/*** Attempt to obtain an event mutex for the given event.** @param \Illuminate\Console\Scheduling\Event $event* @return bool*/public function create(Event $event){if ($this->cache->store($this->store)->getStore() instanceof LockProvider) {return $this->cache->store($this->store)->getStore()->lock($event->mutexName(), $event->expiresAt * 60)->acquire();}return $this->cache->store($this->store)->add($event->mutexName(), true, $event->expiresAt * 60);}/*** Determine if an event mutex exists for the given event.** @param \Illuminate\Console\Scheduling\Event $event* @return bool*/public function exists(Event $event){if ($this->cache->store($this->store)->getStore() instanceof LockProvider) {return ! $this->cache->store($this->store)->getStore()->lock($event->mutexName(), $event->expiresAt * 60)->get(fn () => true);}return $this->cache->store($this->store)->has($event->mutexName());}/*** Clear the event mutex for the given event.** @param \Illuminate\Console\Scheduling\Event $event* @return void*/public function forget(Event $event){if ($this->cache->store($this->store)->getStore() instanceof LockProvider) {$this->cache->store($this->store)->getStore()->lock($event->mutexName(), $event->expiresAt * 60)->forceRelease();return;}$this->cache->store($this->store)->forget($event->mutexName());}/*** Specify the cache store that should be used.** @param string $store* @return $this*/public function useStore($store){$this->store = $store;return $this;}}