code-orange/redis-counting-semaphore
最新稳定版本:v1.2
Composer 安装命令:
composer require code-orange/redis-counting-semaphore
包简介
Distributed counting semaphore implementation for redis
README 文档
README
redis-counting-semaphore is a package with a counting semaphore implementation for PHP.
It uses redis as a central broker.
Installation
To install redis-counting-semaphore with composer:
composer require code-orange/redis-counting-semaphore
Usage
First, make sure you have a Predis connection instance.
You can create and attempt to obtain a semaphore like so:
<?php use CodeOrange\RedisCountingSemaphore\Semaphore; $client = new Predis\Client(); // Create a counting semaphore with a limit of 3 $sem = new Semaphore($client, 'semaphore-name', 3); if ($sem->acquire(0.1, 10)) { // Obtained the semaphore use_limited_resource(); $sem->release(); } else { // We weren't able to get a semaphore, even though we tried 10 times // And slept for 0.1 seconds in between tries }
API
/** * Semaphore constructor. * @param Client $client Predis client with an open connection * @param string $name Name of the semaphore * @param int $limit The amount of resources this semaphore protects * @param int $timeout Timeout of an acquired semaphore, in seconds */ public Semaphore(Client $client, $name, $limit = 1, $timeout = 10); /** * Try to acquire a semaphore * * @param float $sleep Number of seconds to sleep between retries. If null, this function will not retry but return immediately. * @param int $retries Number of times to retry before giving up * @return bool Whether or not the semaphore was acquired correctly */ public function acquire($sleep = null, $retries = null); /** * Release this semaphore * * @return void */ public function release(); /** * Refresh the semaphore * * @return bool Whether or not we still have the semaphore */ public function refresh();
统计信息
- 总下载量: 53.5k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 6
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: Apache-2.0
- 更新时间: 2018-03-13