notamedia/yii2-locker

Yii2 Locker 扩展

安装: 114

依赖者: 0

建议者: 0

安全: 0

星星: 2

关注者: 4

分支: 1

开放问题: 0

类型:yii2-extension

1.0.0-beta 2017-12-27 12:33 UTC

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