kitpages / semaphore-bundle
这是一个提供信号量系统的 Symfony2 扩展包。
v2.0.0
2017-03-24 12:47 UTC
Requires
- php: >=5.6
- symfony/console: ~3.0
- symfony/framework-bundle: ~3.0
- symfony/monolog-bundle: ~3.0
Requires (Dev)
- phpunit/phpunit: ~5.0
- symfony/browser-kit: ~3.0
- symfony/class-loader: ~3.0
- symfony/finder: ~3.0
- symfony/process: ~3.0
- symfony/yaml: ~3.0
README
此扩展包允许多个并行的 PHP 进程之间保护对单个资源的访问。
快速入门
// get manager $semaphoreManager = $this->get("kitpages_semaphore.manager"); // wait for the semaphore disponibility $semaphoreManager->aquire("my_semaphore_name"); // do someting interesting with the protected resource // release the semaphore $semaphoreManager->release("my_semaphore_name");
功能
- 多个并行 PHP 进程之间的共享信号量(使用文件系统)
- 死锁检测:在可配置的持续时间后将信号量视为死锁
- 在 monolog 的特定通道(通道:kitpages_semaphore)上记录死锁
- 计时器,以查看在 Symfony 调试工具栏的时间线中信号量的使用情况
安装
使用 Composer,只需 $ composer require kitpages/semaphore-bundle
包或
{ "require": { "kitpages/semaphore-bundle": "~1.4" } }
然后在 AppKernel 中添加扩展包
public function registerBundles() { $bundles = array( // ... // use of monolog new Symfony\Bundle\MonologBundle\MonologBundle(), // the bundle itself new Kitpages\SemaphoreBundle\KitpagesSemaphoreBundle(), ); }
在 config.yml 中添加配置
默认值是 0.1 秒的池睡眠时间和 5 秒的死锁持续时间
kitpages_semaphore: sleep_time_microseconds: 100000 dead_lock_microseconds: 5000000
状态
- 稳定,经过测试,且在 travis-ci 上运行
版本
2014-02-11 : v1.4.0 : 添加了 SF2 调试工具栏中的信号量使用时间线
- 无 BC 兼容性问题
- 新功能:添加计时器以将信号量使用添加到 SF2 调试工具栏的时间线中
- 新功能:调试日志更简洁
- 新功能:在未锁定信号量时添加警告日志
2014-01-22 : v1.3.0 : 基于文件锁的重构
- 无 BC 兼容性问题
- 使用文件锁而不是 SQL 事务
2014-01-14 : v1.2.0 : 死锁记录器
- 无 BC 兼容性问题
- 新功能:在 "kitpages_semaphore" 通道上使用 monolog 发送每个死锁的警告
- 修复:composer.json 中的依赖关系
- 增强:对配置解析器和 DIC 中的服务初始化进行了更多单元测试
- 增强:重写 Readme
2013-12-11 : v1.1.0 : 在获取-释放过程中的原子性
- 无 BC 兼容性问题
- 新功能:在获取-释放过程中添加数据库事务以保证原子性
2013-12-05 : v1.0.0 : 第一个版本