pteich / simplelock
一个简单的PHP 5.3+ 锁/信号量库,具有不同的适配器。防止代码部分洪水式或多次执行。
dev-master
2014-12-05 22:26 UTC
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-24 02:13:46 UTC
README
概览
一个简单的PHP 5.3+ 锁/信号量库,具有不同的适配器。有助于保持代码线程安全,防止洪水式或多次执行耗时代码,否则可能会破坏您的应用程序。
您可以设置特定时间段的锁。在脚本终止时,锁也可以自动释放。这保证了任务只能一次执行一次。
安装
使用Composer
只需将 pteich/simplelock
添加到您的 composer.json require 中
"pteich/simplelock": "dev-master"
不使用Composer
从GitHub下载存档并将其展开到目录中。没有提供自动加载器,因此您需要自己处理。您可以使用PSR-4兼容的自动加载器注册Simplelock目录。
使用方法
// create apc adapter $adapter = new \Simplelock\Adapter\Apc(); // create simplelock object using $adapter and use autounlock feature $lock = new \Simplelock( $adapter, true ); $ttl = 60; // seconds to lock $mykey = 'my key'; // key for this lock if (!$lock->locked($mykey)) { // lock now $lock->lock($mykey,$ttl); // do hard work here }
适配器
如果Simplelock构造函数是适配器对象,则第一个参数是适配器。支持的适配器有
- mock - 总是解锁,用于测试目的
- file - 文件后端,在可配置的目录中保持信号量文件
- apc - apc后端,在内存中保持值
APC适配器
不需要提供配置。需要APC扩展。在解锁时从内存中删除值。
文件适配器
提供一个包含 path
键的数组,指向用于存储信号量文件的有效目录。此适配器在解锁时删除文件。
示例
$adapter = new \Simplelock\Adapter\File(array( 'path' => __DIR__ . '/lock' ));
Mock适配器
此适配器始终保持所有内容解锁。对于测试或在不删除Simplelock调用的情况下禁用锁定非常有用。
自动解锁
如果将true作为Simplelock构造函数的第二个参数提供,则所有锁在脚本终止时都会自动释放。