phlib / mutex
PHP mutex handling in different ways
Installs: 4 956
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 0
Open Issues: 0
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 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/.