php-mutex是一个互斥锁的实现,支持多种方式,包括文件锁、MySQL、Redis。
文件锁
$lock = new FileMutex();
MySQL锁
$pdo = new PDO('mysql:host=127.0.0.1', 'root', 'root');
$lock = new MysqlPdoMutex($pdo);
Redis锁
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$lock = new PhpRedisMutex($redis);
$mutexName = 'xxx';
if ($lock->acquire($mutexName, 3)) {
// 业务逻辑代码……
// 释放锁
$lock->release($mutexName);
} else {
// 获取锁失败,停止执行后续
throw new Exception('Unable to gain lock!');
}
composer install
vendor/bin/phpunit