防止控制台命令多次执行
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 5.0,现已不再维护。
读本页的更新版本用于Syob娱乐下载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
/ /……使用ob娱乐下载\组件\控制台\命令\命令;使用ob娱乐下载\组件\控制台\命令\LockableTrait;使用ob娱乐下载\组件\控制台\输入\InputInterface;使用ob娱乐下载\组件\控制台\输出\OutputInterface;类UpdateContentsCommand扩展命令{使用LockableTrait;/ /……受保护的函数执行(InputInterface$输入, OutputInterface$输出){如果(!$这->锁()){$输出->writeln (该命令已经在另一个进程中运行。);返回0;}//如果你想等待直到锁被释放,使用这个:// $this->锁(null, true);/ /……//如果没有显式释放,Symfony释放锁ob娱乐下载//当命令执行结束时自动返回$这->release ();}}
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。