禁止重复执行同一控制台命令
编辑本页警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 5.2,现已不再维护。
读本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。
禁止重复执行同一控制台命令
你可以使用锁防止同一命令在同一服务器上多次运行。的锁组件提供多个类来基于文件系统创建锁(FlockStore),共享内存(SemaphoreStore),甚至数据库和Redis服务器。
此外,Console组件还提供了一个名为LockableTrait
这为锁定和释放命令添加了两个方便的方法:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
/ /……使用欧宝娱乐app下载地址\组件\控制台\命令\命令;使用欧宝娱乐app下载地址\组件\控制台\命令\LockableTrait;使用欧宝娱乐app下载地址\组件\控制台\输入\InputInterface;使用欧宝娱乐app下载地址\组件\控制台\输出\OutputInterface;类UpdateContentsCommand扩展命令{使用LockableTrait;/ /……受保护的函数执行(InputInterface$输入, OutputInterface$输出):int{如果(!$这->锁()){$输出->writeln (该命令已经在另一个进程中运行。);返回命令::成功;}//如果你想等待直到锁被释放,使用这个:// $this->锁(null, true);/ /……//如果没有显式释放,Symfony释放锁欧宝娱乐app下载地址//当命令执行结束时自动返回$这->release ();返回命令::成功;}}
5.1
的命令::成功
常量是在Symfony 5.1中引入的。欧宝娱乐app下载地址
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。