DatabaseLock数据库方式的共享锁FileLock文件加锁的方式实现SemaphoreLock基于信号量(是系统提供的一种原子操作)的方式实现。需php编译时--enable-sysvsemMemcacheLock基于memcache实现
- composer
{
"require": {
"php-comp/lock": "dev-master"
}
}- 直接拉取
git clone https://git.oschina.net/inhere/php-lock.git // git@osc
git clone https://github.com/inhere/php-lock.git // githubuse PhpComp\Lock\Lock;
$locker = new Lock([
'driver' => '', // allow: File Database Memcache Semaphore
'tmpDir' => '/tmp', // tmp path, if use FileLock
]);
$key = 'op1';
if ($locker->lock($key)) {
// do something ...
$locker->unlock($key);
}MIT