baraja-core / lock
此包最新版本(v1.0.2)没有提供许可证信息。
简单的PHP锁定函数系统。
v1.0.2
2022-02-02 21:12 UTC
Requires
- php: ^8.0
Requires (Dev)
- phpstan/phpstan: ^0.12.74
- phpstan/phpstan-nette: ^0.12.14
- roave/security-advisories: dev-master
- spaze/phpstan-disallowed-calls: ^1.1
- tracy/tracy: ^2.8
This package is auto-updated.
Last update: 2024-09-08 17:36:18 UTC
README
这是一个简单的库,用于在您的PHP应用程序中处理和清除锁定。使用它无需任何依赖项,所有操作都在原生PHP中完成。
想法
在您的PHP应用程序中实现简单高效锁定管理。
要使用它,只需启动一个锁定(您可以在同一时间使用许多不同的锁定),等待解锁,处理任何竞争任务,然后让锁定过期或手动解锁。
如果让锁定自然过期,它将通过垃圾收集器组件自动清除。
📦 安装
最好使用Composer进行安装,您也可以在Packagist和GitHub上找到此包。
安装命令:
$ composer require baraja-core/lock
如何使用
简单请求一个静态的Lock
服务,您可以执行以下操作
// start no-name transaction Lock::startTransaction(); if (Lock::isTransactionRunning()) { // Transaction is running... } // Stop no-name transaction Lock::stopTransaction();
默认情况下,您应该始终在操作结束时使用stopTransaction()
方法停止事务。如果您没有终止事务,它将在保护限制到期时自动终止。
保护限制不能被禁用,并在停止事务失败的情况下使用,以避免完全破坏应用程序。应用程序总能从损坏的锁定中摆脱出来。
命名事务和设置自己的限制
在竞争进程的情况下,我们首先需要等待之前的交易完成。
为此,最好使用wait()
方法,它将自动等待之前的交易完成。
等待到空闲时间槽后,我们在当前进程中创建自己的交易,稍后手动终止。
Lock::wait('order-number'); // start transaction "order-number" for 5 seconds Lock::startTransaction('order-number', 5000); // run something special... // stop transaction Lock::stopTransaction('order-number');
如果事务没有使用stopTransaction()
方法手动停止,它将在保护间隔到期后自动终止。
如果由于某些原因(例如,您没有删除事务文件的权利)在系统级别直接停止事务失败,则wait()
方法将在最迟30秒后(可以设置间隔)取消请求,即使锁定仍然存在。
这确保了应用程序永远不会完全卡住。
📄 许可证
baraja-core/lock
根据MIT许可证授权。有关详细信息,请参阅LICENSE文件。