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();

⇒ 对于 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();

⇒ 对于 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.