Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F5982561
LockableTrait.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
LockableTrait.php
View Options
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace
Symfony\Component\Console\Command
;
use
Symfony\Component\Console\Exception\LogicException
;
use
Symfony\Component\Lock\LockFactory
;
use
Symfony\Component\Lock\LockInterface
;
use
Symfony\Component\Lock\Store\FlockStore
;
use
Symfony\Component\Lock\Store\SemaphoreStore
;
/**
* Basic lock feature for commands.
*
* @author Geoffrey Brier <geoffrey.brier@gmail.com>
*/
trait
LockableTrait
{
private
?
LockInterface
$lock
=
null
;
private
?
LockFactory
$lockFactory
=
null
;
/**
* Locks a command.
*/
private
function
lock
(?
string
$name
=
null
,
bool
$blocking
=
false
):
bool
{
if
(!
class_exists
(
SemaphoreStore
::
class
))
{
throw
new
LogicException
(
'To enable the locking feature you must install the symfony/lock component. Try running "composer require symfony/lock".'
);
}
if
(
null
!==
$this
->
lock
)
{
throw
new
LogicException
(
'A lock is already in place.'
);
}
if
(
null
===
$this
->
lockFactory
)
{
if
(
SemaphoreStore
::
isSupported
())
{
$store
=
new
SemaphoreStore
();
}
else
{
$store
=
new
FlockStore
();
}
$this
->
lockFactory
=
(
new
LockFactory
(
$store
));
}
$this
->
lock
=
$this
->
lockFactory
->
createLock
(
$name
?:
$this
->
getName
());
if
(!
$this
->
lock
->
acquire
(
$blocking
))
{
$this
->
lock
=
null
;
return
false
;
}
return
true
;
}
/**
* Releases the command lock if there is one.
*/
private
function
release
():
void
{
if
(
$this
->
lock
)
{
$this
->
lock
->
release
();
$this
->
lock
=
null
;
}
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Oct 3, 22:25 (1 w, 3 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
6d/63/03c1c746a0adcb3e50663a86d466
Default Alt Text
LockableTrait.php (1 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment