Я сказал:
Компонент блокировки не работает, если служба вызывается из контроллера:
На самом деле проблема, с которой я столкнулся, заключалась в том, что встроенный dev-сервер Symfony был однопоточным, поэтому запросы не могли выполняться параллельно, в то время как CLI PHP многопоточный. Я не смог запустить скрипт параллельно через сервер dev, запрос был поставлен в очередь, служебный скрипт никогда не блокировался.
Компонент блокировки работает одинаково, независимо от того, вызывается ли он из команды или из контроллера.
Использование блокировки в сервисе так работает:
use Symfony\Component\Lock\Factory;
use Symfony\Component\Lock\Store\FlockStore;
$store = new FlockStore(sys_get_temp_dir());
$factory = new Factory($store);
$lock = $factory->createLock('LOCK_KEY');
if ($lock->acquire()) {
//some locked code
$lock->release();
}