Метод isAcquired
Метод isAcquired класса Lock возвращает true,
если блокировка была успешно захвачена через метод
acquire, и false в противном случае.
Метод не принимает параметров и не изменяет состояние блокировки -
он лишь сообщает, владеет ли текущий процесс данной блокировкой.
Этот метод удобно использовать для проверки перед выполнением критической секции кода, чтобы не запускать её повторно, если блокировка уже удерживается.
Синтаксис
public function isAcquired(): bool
Пример
Давайте создадим блокировку через LockFactory
и проверим её состояние до и после захвата:
<?php
namespace App\Service;
use Symfony\Component\Lock\LockFactory;
use Symfony\Component\Lock\Store\InMemoryStore;
class LockService
{
public function check(): void
{
$factory = new LockFactory(new InMemoryStore());
$lock = $factory->createLock('article');
echo $lock->isAcquired() ? "acquired" : "not acquired";
$lock->acquire();
echo $lock->isAcquired() ? "acquired" : "not acquired";
}
}
?>
Результат выполнения кода:
"not acquired"
"acquired"
Пример
Давайте проверим состояние блокировки после её освобождения
через метод release:
<?php
namespace App\Service;
use Symfony\Component\Lock\LockFactory;
use Symfony\Component\Lock\Store\InMemoryStore;
class LockService
{
public function check(): void
{
$factory = new LockFactory(new InMemoryStore());
$lock = $factory->createLock('article');
$lock->acquire();
echo $lock->isAcquired() ? "acquired" : "not acquired";
$lock->release();
echo $lock->isAcquired() ? "acquired" : "not acquired";
}
}
?>
Результат выполнения кода:
"acquired"
"not acquired"