phlib/mutex

PHP 采用不同方式处理互斥锁

3.0.0 2021-11-22 07:11 UTC

This package is auto-updated.

Last update: 2024-08-31 00:31:11 UTC


README

Code Checks Codecov Latest Stable Version Total Downloads Licence

PHP 采用不同方式处理互斥锁

安装

通过 Composer

$ composer require phlib/mutex

使用方法

MySQL

$adapter = new \Phlib\Db\Adapter([
    'host' => '127.0.0.1',
    'username' => 'my-user',
    'password' => 'my-pass'
]); 
$mutex = new \Phlib\Mutex\MySQL('my-lock', $adapter);
if ($mutex->lock()) {
    // Do some data manipulation while locked
    $mutex->unlock();
}

辅助工具

Get-Or-Create 提供了一种简单的方法来尝试获取一个值,或者在它不存在时使用互斥锁来创建它

$getClosure = function() {
    // attempt to get a value, eg. from DB, cache, etc.
    if (!$value) {
        throw new \Phlib\Mutex\NotFoundException();
    }
    return $value;
};

$createClosure = function() {
    // attempt to create a value and write eg. to DB, cache, etc.
    return $value;
};

$value = \Phlib\Mutex\Helper::getOrCreate($mutex, $getClosure, $createClosure);

许可证

本软件包是自由软件:您可以按照自由软件基金会发布的GNU Lesser General Public License的条款重新分发和/或修改它,无论是许可证的版本3,还是(根据您的选择)任何后续版本。

本程序分发时希望它是有用的,但没有任何保证;甚至没有关于其商业性或适用于特定目的的暗示性保证。有关详细信息,请参阅GNU Lesser General Public License。

您应已收到GNU Lesser General Public License的副本。如果没有,请参阅https://gnu.ac.cn/licenses/