net_bazzline / component_lock
PHP 组件锁
2.3.0
2017-01-26 18:38 UTC
Requires
- php: ^5.6||^7.0
Requires (Dev)
- mikey179/vfsstream: 1.6.*
- mockery/mockery: 0.9.7
- phpunit/phpunit: 5.7.*
README
查看 openhub.net。
一般
此组件提供了 LockInterface 以及一个 LockAwareInterface。它包含两个 LockInterface 的实现。
您可以使用此接口来锁定类或进程,以防止对象中的更改(因此您可以冻结/锁定类以设置属性)或锁定现有的进程(如 cronjob)以防止重复执行。
此组件是通过将 PHP_Bazzline_Utility 存储库拆分而成的。
实现
有两个实现。一个是 FileNameLock,另一个是 RuntimeLock。
RuntimeLock
RuntimeLock 可以用于锁定实例以防止修改。如果您在每个设置器方法中实现一个检查,您可以轻松创建一个实例(例如通过工厂)并在之后锁定它以防止修改。
FileNameLock
FileNameLock 可以用于锁定类以防止多次实例化。如果您在 cronjob 或应单独运行的业务流程中实现此功能,则非常有用。
FileHandlerLock
FileHandlerLock 可以用于使用 php 的 flock 功能锁定文件。
未来改进
- 实现“等待”,如 此处 实现。
- 查看 semaphore 项目以查看是否可以合并。
- 查看是否所有项目都可以协同工作。
- 查看 havvg/lock。
历史
- 即将推出
- @todo
- 2.3.0 - 发布于 2017-01-26
- 更新最低要求为 php 5.6
- 2.2.1 - 发布于 2016-06-29
- 添加了对 php 7.0 的集成测试
- 添加了链接到
- 最新的稳定版本
- scrutinizer代码质量
- versioneye依赖状态
- 迁移到psr-4自动加载
- 移除了针对php 5.3.3的集成测试
- 2.2.0 - 发布于2016-06-28
- 添加了phpunit 5.4作为依赖(如果PHP版本匹配的话)
- 根据特性请求,将进程ID添加到锁文件中
- 更新了依赖项
- 2.1.0 - 发布于2015-09-10
- 在FileHandlerLock中实现了对SplFileObject的支持
- 2.0.1 - 发布于2015-09-09
- 稳定了依赖项
- 2.0.0 - 发布于2015-09-08
- 添加了FileHandlerLock
- 将FileLock重命名为FileNameLock
- 在"LockInterface"中将"getName"重命名为"getResource",将"setName"重命名为"setResource"
- 1.0.3
- 添加了LockDependentInterface
- 1.0.2
- 为FileNameLock和RuntimeLock添加了带可选参数$name的构造函数
- 1.0.1
- 切换到LGPLv3
- 1.0.0
- 为FileLock和RuntimeLock添加了实现
- 使用unittest覆盖了实现
- 完成了LockInterface和LockAwareInterface
结语
如果你喜欢它,请给它加星。如果你需要它,请添加问题。如果你喜欢它,请拉取补丁。如果你使用了它,请写一篇博客。如果你爱它,请捐献一些东西 :-]。