phlib / mutex
PHP 采用不同方式处理互斥锁
3.0.0
2021-11-22 07:11 UTC
Requires
- php: ^7.4 || ^8.0
- phlib/config: ^2
- phlib/db: ^2
Requires (Dev)
- ext-pdo: *
- ext-pdo_mysql: *
- phpunit/phpunit: ^9
- symplify/easy-coding-standard: ^9
Suggests
- ext-pdo: Required to use MySQL mutex
- ext-pdo_mysql: Required to use MySQL mutex
README
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/。