kitpages/semaphore-bundle

这是一个提供信号量系统的 Symfony2 扩展包。

v2.0.0 2017-03-24 12:47 UTC

This package is auto-updated.

Last update: 2024-09-04 19:23:14 UTC


README

Build Status

SensioLabsInsight

此扩展包允许多个并行的 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 : 第一个版本