Skip to content

syastrebov/mutex-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

33fbd83 · May 3, 2015
Apr 5, 2014
Sep 11, 2014
May 3, 2015
Sep 12, 2014
May 22, 2014
Apr 5, 2014
May 3, 2015
Mar 23, 2014
Apr 13, 2014
Apr 10, 2014

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"
                }
            }
        }
    }]
}