ivopetkov / lock
PHP 锁库
v1.2.0
2023-11-02 09:29 UTC
Requires
- php: 7.0.*|7.1.*|7.2.*|7.3.*|7.4.*|8.0.*|8.1.*|8.2.*|8.3.*
Requires (Dev)
- ivopetkov/docs-generator: 0.1.*
README
一个简单的锁库... 它基于文件锁(这很棒)。
为什么你需要它
想象一下你有两个任务你不希望它们重叠(例如,它们修改相同的数据)。使用这个库将给你带来平静。
请注意
该库使用文件锁机制以确保其正确运行。这意味着它只能用于共享同一文件系统的应用程序/实例/进程。一个服务器的网站就是这样做的。
通过 Composer 安装
composer require ivopetkov/lock
使用方法
使用以下两个方法(acquire() 和 release())将确保没有两个应用程序/实例/进程在它们之间执行代码。
<?php require 'vendor/autoload.php'; use IvoPetkov\Lock; Lock::acquire('lock1'); // Acquires a lock and pauses other applications/instances/processes until the lock is released. // Do something awesome Lock::release('lock1'); // Releases the acquired lock.
文档
完整的 文档 可在此存储库中找到。
配置
获取锁的默认超时时间为 1.5 秒。您可以通过调用以下方法来修改它
Lock::setDefaultLockTimeout(2.5);
库需要的临时锁文件存储在您的操作系统临时目录中。您可以通过调用以下方法来修改它
Lock::setLocksDir('/some/other/temp/dir/');
如果多个应用程序使用此库,您可以调用以下方法来前缀提供的键。这样,不同的应用程序可以使用相同的键而不互相干扰。
Lock::setKeyPrefix('app1');
许可协议
本项目采用 MIT 许可协议。有关更多信息,请参阅 许可文件。
贡献
请随时提出新问题并为项目做出贡献。让我们让这个项目变得出色,并以积极的方式进行。
作者
该库由 Ivo Petkov (ivopetkov.com) 创建和维护。