t-kanstantsin / yii2-action-lock-behavior
允许同时只运行一个动作实例
2.0.0
2019-02-14 08:39 UTC
Requires
- php: >=7.1
- ext-mbstring: ^7.1
- psr/log: ^1.0
- yiisoft/yii2: ^2.0.10
This package is not auto-updated.
Last update: 2024-09-15 05:23:38 UTC
README
Yii小部件
基本
该行为允许使用 yii\mutex\*
包禁止同一控制台应用程序动作的多次运行(例如,通过cron启动的长执行任务)。
选择锁定源时请注意以下内容
-
yii\mutex\FileMutex
简单,但只能用于 单个Docker容器实例,因为无法确定进程是否仍在运行或已在另一个容器中结束。需要可写目录 -
yii\mutex\DbMutex
需要数据库连接。可能只能与单个数据库实例一起使用。
示例
使用全局配置中的互斥锁
public function behaviors(): array { return [ 'pid' => ActionLockBehavior::class, ]; }
动态定义互斥锁
public function behaviors(): array { return [ 'pid' => [ 'class' => ActionLockBehavior::class, 'mutex' => [ 'class' => FileMutex::class, 'mutexPath' => \Yii::getAlias('@runtime/pid'), ], ], ]; }