notamedia / yii2-locker
Yii2 Locker 扩展
1.0.0-beta
2017-12-27 12:33 UTC
Requires
- php: >=5.6.0
- yiisoft/yii2: ~2.0
Requires (Dev)
- codeception/base: 2.3.*
- codeception/specify: 0.4.*
- codeception/verify: 0.3.*
- guzzlehttp/guzzle: <7.0
This package is auto-updated.
Last update: 2024-09-19 20:10:02 UTC
README
该扩展包括以下功能
- 通过唯一标识符激活/停用资源锁定。
- 如果存在活动锁定,则检查并阻止请求。
有关许可证信息,请参阅LICENSE文件。
安装
安装此扩展的首选方式是通过 composer。
运行以下命令
php composer.phar require --prefer-dist notamedia/yii2-locker
或将以下内容添加到您的composer.json文件的require部分
"notamedia/yii2-locker": "1.0.0"
配置
要使用此扩展,只需将以下代码添加到您的应用程序配置中
return [ //.... 'components' => [ //.... 'lockManager' => [ 'class' => LockManager::class, 'lockTime' => [ LockManager::DEFAULT_LOCK_TIME_KEY => 900, ] ], //.... ], //.... ];
- 注意:您可以为每个资源设置自定义时间,只需将自定义时间添加到
lockTime
,键为资源类,值为秒数 - 注意:如果您的数据库驱动程序不是MySQL,您需要设置自定义的
'initTimeExpressionValue' = '...'
和'diffExpressionValue' = '...'
- 注意:如果您想使用自定义锁定类,您需要设置新的
LockInterface::class
定义,如下所示
'container' => [
'...',
'definitions' => [
'...',
LockInterface::class => Lock::class
'...'
],
'...'
]
在您的控制器中连接以下操作并配置路由
return [ //.... 'lock' => [ 'class' => LockAction::class, 'modelClass' => $this->modelClass, 'checkAccess' => [$this, 'checkAccess'] ], 'unlock' => [ 'class' => UnlockAction::class, 'modelClass' => $this->modelClass, 'checkAccess' => [$this, 'checkAccess'], ], //.... ];
- 注意:如果您想设置
'lockManager' = '...'
属性,因为您的LockManager组件具有其他键
附加行为以检查锁定,或者您可以自己检查
return [ //.... [ 'class' => LockControlFilter::class, 'only' => ['update'] ], //.... ];
- 注意:如果您想设置
'lockManager' = '...'
属性,因为您的LockManager组件具有其他键
连接并执行迁移,例如
对于yii2 > 2.0.10
'controllerMap' => [ //... 'migrate' => [ 'class' => MigrateController::class, 'migrationNamespaces' => [ 'notamedia\locker\migrations', ], //... ], //... ]
对于yii2 < 2.0.10,创建新的迁移并使用extends
class mxxxxxx_xxxxxx_create_table_lock extends m000000_000000_create_table_lock
使用方法
方法
LockAction
- 激活锁定并返回成功的204
状态码UnlockAction
- 停用锁定并返回成功的204
状态码
异常
LockAnotherUserException
- 如果锁定设置给了另一个用户,则抛出异常,状态码500
LockNotExistException
- 如果锁定不存在,则抛出异常,状态码500
LockNotExpiredException
- 如果锁定实际有效且其时间未过期,则抛出异常,状态码500