Абстрактный класс yii\mutex\Mutex
| Наследование | yii\mutex\Mutex » yii\base\Component » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable |
| Подклассы | yii\mutex\DbMutex, yii\mutex\FileMutex, yii\mutex\MysqlMutex, yii\mutex\OracleMutex, yii\mutex\PgsqlMutex, yii\redis\Mutex |
| Доступен с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/mutex/Mutex.php |
Компонент Mutex позволяет обеспечить взаимоисключение при одновременном выполнении процессов, чтобы предотвратить «гонки».
Это достигается с помощью механизма «блокировки». Каждый потенциально конкурирующий поток сотрудничает, приобретая блокировку перед доступом к соответствующим данным.
Пример использования:
if ($mutex->acquire($mutexName)) {
// business logic execution
} else {
// execution is blocked!
}
Это базовый класс, который необходимо расширить для реализации фактического механизма блокировки.
Публичные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $autoRelease | boolean | Выполнять ли автоматическое освобождение всех блокировок, полученных в данном процессе (т.е. локальные блокировки), перед завершением выполнения скрипта. | yii\mutex\Mutex |
| $behaviors | yii\base\Behavior[] | Список поведений, прикрепленных к этому компоненту | yii\base\Component |
Общедоступные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает метод с указанным именем, который не является методом класса. | yii\base\Object |
| __clone() | Этот метод вызывается после создания объекта путем клонирования существующего. | yii\base\Component |
| __construct() | Конструктор. | yii\base\Object |
| __get() | Возвращает значение свойства объекта. | yii\base\Object |
| __isset() | Проверяет, установлено ли свойство, т.е. определено и не равно null. | yii\base\Object |
| __set() | Устанавливает значение свойства объекта. | yii\base\Object |
| __unset() | Устанавливает свойство объекта в null. | yii\base\Object |
| acquire() | Получает блокировку по имени. | yii\mutex\Mutex |
| attachBehavior() | Присоединяет поведение к компоненту. | yii\base\Component |
| attachBehaviors() | Присоединяет список поведений к компоненту. | yii\base\Component |
| behaviors() | Возвращает список поведений, по которым должен действовать этот компонент. | yii\base\Component |
| canGetProperty() | Возвращает значение, указывающее, можно ли прочитать свойство. | yii\base\Object |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Object |
| className() | Возвращает полное квалифицированное имя этого класса. | yii\base\Object |
| detachBehavior() | Отсоединяет поведение от компонента. | yii\base\Component |
| detachBehaviors() | Отсоединяет все поведения от компонента. | yii\base\Component |
| ensureBehaviors() | Убеждается, что поведения, объявленные в behaviors(), присоединены к этому компоненту. | yii\base\Component |
| getBehavior() | Возвращает объект поведения с указанным именем. | yii\base\Component |
| getBehaviors() | Возвращает все присоединенные к этому компоненту поведения. | yii\base\Component |
| hasEventHandlers() | Возвращает значение, указывающее, есть ли обработчик, присоединенный к указанному событию. | yii\base\Component |
| hasMethod() | Возвращает значение, указывающее, определен ли метод. | yii\base\Object |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство. | yii\base\Object |
| init() | Инициализирует компонент Mutex. | yii\mutex\Mutex |
| off() | Отсоединяет существующий обработчик событий от этого компонента. | yii\base\Component |
| on() | Присоединяет обработчик событий к событию. | yii\base\Component |
| release() | Освобождает полученную блокировку. Этот метод вернет false в случае, если блокировка не найдена. | yii\mutex\Mutex |
| trigger() | Вызывает событие. | yii\base\Component |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| acquireLock() | Этот метод должен быть расширен конкретными реализациями Mutex. Получает блокировку по имени. | yii\mutex\Mutex |
| releaseLock() | Этот метод должен быть расширен конкретными реализациями Mutex. Освобождает блокировку по заданному имени. | yii\mutex\Mutex |
Подробное описание свойств
$autoRelease общедоступное свойство
Указывает, должны ли все блокировки, полученные в этом процессе (т.е. локальные блокировки), автоматически освобождаться перед завершением выполнения скрипта. По умолчанию значение true. Установка этого свойства в true означает, что все блокировки, полученные в этом процессе, должны быть освобождены (независимо от ошибок или исключений).
public boolean $autoRelease = true
Подробное описание методов
acquire() общедоступный метод
Получает блокировку по имени.
| общедоступный boolean acquire ( $name, $timeout = 0 ) | ||
|---|---|---|
| $name | string |
Имя блокировки для получения. Должно быть уникальным. |
| $timeout | integer |
Время ожидания освобождения блокировки. По умолчанию ноль, что означает, что метод вернёт false сразу же, если блокировка уже была получена. |
| return | boolean |
Результат получения блокировки. |
acquireLock() защищённый абстрактный метод
Этот метод должен быть расширен конкретными реализациями Mutex. Получает блокировку по имени.
| защищённый абстрактный boolean acquireLock ( $name, $timeout = 0 ) | ||
|---|---|---|
| $name | string |
Имя блокировки для получения. |
| $timeout | integer |
Время ожидания освобождения блокировки. |
| return | boolean |
Результат получения блокировки. |
init() общедоступный метод
Инициализирует компонент Mutex.
| общедоступный void init ( ) |
|---|
release() общедоступный метод
Освобождает полученную блокировку. Этот метод вернёт false, если блокировка не найдена.
| общедоступный boolean release ( $name ) | ||
|---|---|---|
| $name | string |
Имя блокировки для освобождения. Эта блокировка должна уже существовать. |
| return | boolean |
Результат освобождения блокировки: false, если блокировка с заданным именем не найдена. |
releaseLock() защищённый абстрактный метод
Этот метод должен быть расширен конкретными реализациями Mutex. Освобождает блокировку по заданному имени.
| защищённый абстрактный boolean releaseLock ( $name ) | ||
|---|---|---|
| $name | string |
Имя блокировки для освобождения. |
| return | boolean |
Результат освобождения. |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-mutex-mutex.html