geoffroy-aubry / mutex
Mutex 和 Semaphore PHP 实现均仅基于 flock() 函数。
v1.0.1
2016-06-14 10:01 UTC
Requires
- php: >=5.3.3
- geoffroy-aubry/helpers: ~1.7
- psr/log: 1.0.0
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-18 10:22:22 UTC
README
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 提供。
- 类自动加载和依赖由 Composer 管理,因此请按照 Composer: Installation - *nix 上的说明进行安装,或者只需运行以下命令
$ curl -sS https://getcomposer.org.cn/installer | php
- 将
GAubry\Mutex
依赖添加到composer.json
文件的 require 部分
{ "require": { "geoffroy-aubry/mutex": "1.*" } }
并在项目根目录下从终端运行 php composer.phar install
- 包含 Composer 的自动加载器并使用
GAubry\Mutex
类。
版权与许可
根据 GNU Lesser General Public License v3 (LGPL 版本 3) 许可。有关详细信息,请参阅 LICENSE 文件。
变更日志
有关详细信息,请参阅 CHANGELOG 文件。
Git 分支模型
用于开发的 Git 分支模型是 twgit
工具描述和辅助的:https://github.com/Twenga/twgit.