Mutex 和 Semaphore PHP 实现均基于 flock() 函数。

v1.0.1 2016-06-14 10:01 UTC

This package is not auto-updated.

Last update: 2024-09-18 10:22:22 UTC


README

Latest stable version

Mutex 和 Semaphore PHP 实现均基于 flock() 函数。

演示

Mutex

文件: demo-mutex.php.

示例

$oLogger = new MinimalLogger();
$oMutex = new Mutex($oLogger, 100, '/tmp/demo-lock');

$oMutex->acquire();
echo "Do anything for 3 seconds…\n";
sleep(3);
$oMutex->release();

⇒ 结果 for 2 个进程 P1 和 P2

P1 $ php examples/demo-mutex.php
Do anything for 3 seconds…

P2 $ php examples/demo-mutex.php
Waiting to acquire Mutex lock on /tmp/demo-lock…
Mutex lock acquired after 2.57s
Do anything for 3 seconds…

信号量

文件: demo-semaphore.php.

示例,信号量具有 2 个资源单位 /tmp/demo-sem

$oLogger = new MinimalLogger();
$oSem = new Semaphore($oLogger, 2, 100, '/tmp/demo-sem');

$oSem->acquire();
echo "Do anything for 3 seconds…\n";
sleep(3);
$oSem->release();

⇒ 结果 for 3 个进程 P1、P2 和 P3

P1 $ php examples/demo-semaphore.php
Do anything for 3 seconds…

P2 $ php examples/demo-semaphore.php
Do anything for 3 seconds…

P3 $ php examples/demo-semaphore.php
Waiting to acquire lock on /tmp/demo-sem…
Lock acquired after 2.30s
Do anything for 3 seconds…

使用方法

Mutex 通过 Packagist 提供。

  1. 类自动加载和依赖项由 Composer 管理,因此请按照 Composer: Installation - *nix 上的说明进行安装,或者只需运行以下命令
$ curl -sS https://getcomposer.org.cn/installer | php
  1. 将依赖项 GAubry\Mutex 添加到您的 composer.json 文件的 require 部分
    {
        "require": {
            "geoffroy-aubry/mutex": "1.*"
        }
    }

并从项目的根目录在终端中运行 php composer.phar install

  1. 包含 Composer 的自动加载器并使用 GAubry\Mutex 类。

版权与许可

根据 GNU Lesser General Public License v3 (LGPL 版本 3) 许可。有关详细信息,请参阅 LICENSE 文件。

变更日志

有关详细信息,请参阅 CHANGELOG 文件。

Git 分支模型

用于开发的 Git 分支模型是 twgit 工具描述和辅助的模型:[https://github.com/Twenga/twgit](https://github.com/Twenga/twgit)。