gepur-it/sic-bundle

单实例命令包

安装次数: 7,885

依赖: 1

建议者: 0

安全性: 0

星标: 1

关注者: 2

分支: 0

公开问题: 0

类型:symfony-bundle

6.0.0 2021-04-19 09:47 UTC

This package is auto-updated.

Last update: 2024-09-19 17:16:30 UTC


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');
    }
    
    ...
}