pteich/simplelock

一个简单的PHP 5.3+ 锁/信号量库,具有不同的适配器。防止代码部分洪水式或多次执行。

dev-master 2014-12-05 22:26 UTC

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构造函数的第二个参数提供,则所有锁在脚本终止时都会自动释放。