Skip to content

syastrebov/mutex-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mutex

PHP-Erlang Mutex

Сервис блокировок для обработки критических секций в php коде. Особенности:

  • Поддержка таймаутов блокировок
  • Блокировка по строковому ключу
  • Профайлер правильности вызова очереди (отслеживание взаимных блокировок)

=====

##Примеры использования##

Базовое использование:

$mutex = new Mutex('127.0.0.1', 7007);
$mutex->establishConnection();
$mutex->get('key1', false);

if ($mutex->acquire()) {
    // критическая секция
    // …
    
    $mutex->release();
}

Очередь блокировок:

$mutex->get('key1', false);
$mutex->get('key2', false);

if ($mutex->acquire('key1')) {
    if ($mutex->acquire('key2')) {
        $mutex->release('key2');
    }
    $mutex->release('key1');
}

=====

##Установка##

{
    "require": {
        "php": ">=5.2.4",
        "twig/twig": "1.*",
        "leafo/lessphp": "0.4.0",
        "erl/mutex": "0.1.0"
    },
    "repositories": [{
        "type": "package",
        "package": {
            "name": "erl/mutex",
            "version": "0.1.0",
            "source": {
                "url": "https://github.com/syastrebov/mutex.git",
                "type": "git",
                "reference": "master"
            },
            "autoload": {
                "psr-0": {
                    "ErlMutex\\": "src"
                }
            }
        }
    }]
}