Есть вопросы к логике работы Mutex Yii2;
Допустим, есть Mutex:
$mutex = new FileMutex();
$mutexName = 'order-mutex';
$unlockSeconds = 5;
if ($mutex->acquire($mutexName, $unlockSeconds)) {
// код
$mutex->release($mutexName);
} else {
throw new \Exception('');
}
Вопросы:
1. Что значит второй параметр $timeout в методе acquire($name, $timeout = 0)? Это выставление таймаута, прежде чем будет обрабатываться следующий запрос?
$timeout time (in seconds) to wait for lock to be released. Defaults to zero meaning that method will return false immediately in case lock was already acquired.
Из PHPDoc
2. При каких условиях метод acquire() возвращает false, из-за чего выходит бросается исключение?
С этим связана
основная проблема: при обращении к API, некоторые клиенты получают данное исключение, вместо постановки(так ли?) запроса в очередь.