phlib/mutex

PHP mutex handling in different ways

3.0.0 2021-11-22 07:11 UTC

This package is auto-updated.

Last update: 2024-07-01 00:13:11 UTC


README

phlib/mutex

Code Checks Codecov Latest Stable Version Total Downloads Licence

PHP mutex handling in different ways

Install

Via Composer

$ composer require phlib/mutex

Usage

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();
}

Helpers

Get-Or-Create provides a simple way to attempt retrieval of a value, or create it using a mutex if it doesn't already exist

$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);

License

This package is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.