gepur-it / sic-bundle
单实例命令包
6.0.0
2021-04-19 09:47 UTC
Requires
- php: ^7.4|^8.0
- symfony/config: ^5.0
- symfony/console: ^5.0
- symfony/dependency-injection: ^5.0
- symfony/event-dispatcher: ^5.0
- symfony/lock: ^5.0
README
单实例控制台命令包
提供了禁止多个命令实例的能力
在 bundles.php 中添加包
return [
...
GepurIt\SingleInstanceCommandBundle\SingleInstanceCommandBundle::class => ['all' => true],
...
];
要将命令标记为单实例,向您的命令添加接口,并在其中添加方法 getLockName()
class MyCommand extends Command implements SingleInstanceInterface {
...
/**
* get`s lock name for command execution, based on input
* @param InputInterface $input
* @return string
*/
public function getLockName(InputInterface $input): string
{
return $this->getName();
}
...
}
若要使用不同的参数运行相同的命令,请在 getLockName() 方法中使用 $input
class MyCommand extends Command implements SingleInstanceInterface {
...
/**
* get`s lock name for command execution, based on input
* @param InputInterface $input
* @return string
*/
public function getLockName(InputInterface $input): string
{
return $this->getName().':'.$input->getArgument('myArg');
}
...
}