Что LOCK_NB действительно делает в стае? Благодарю .
LOCK_NB
означает неблокирование.
Обычно, когда вы пытаетесь заблокировать файл, выполнение PHP-скрипта прекратится. Затем вызов flock()
блокирует его из возобновления. Это делается до тех пор, пока не будет удалена параллельная блокировка доступного файла.
В основном ваш процесс является единственным, кто пытается заблокировать файл, поэтому блокирующий вызов flock
фактически возвращается мгновенно. Только если два процесса блокируют один и тот же файл, один из них будет приостановлен.
LOCK_NB
флаг LOCK_NB
сделает flock()
немедленно возвращением в любом случае . В этой настройке вы должны проверить возвращаемый статус, чтобы узнать, действительно ли вы приобрели блокировку. В качестве примера:
while ( ! flock($f, LOCK_NB) ) { sleep(1); }
Будет более или менее эмулировать поведение обычного блокирующего вызова. Цель состоит в том, чтобы сделать что-то другое / значимое (а не просто ждать), пока файл по-прежнему заблокирован другим процессом.