Что LOCK_NB действительно делает в стае?

Что LOCK_NB действительно делает в стае? Благодарю .

LOCK_NB означает неблокирование.

Обычно, когда вы пытаетесь заблокировать файл, выполнение PHP-скрипта прекратится. Затем вызов flock() блокирует его из возобновления. Это делается до тех пор, пока не будет удалена параллельная блокировка доступного файла.

В основном ваш процесс является единственным, кто пытается заблокировать файл, поэтому блокирующий вызов flock фактически возвращается мгновенно. Только если два процесса блокируют один и тот же файл, один из них будет приостановлен.

LOCK_NB флаг LOCK_NB сделает flock() немедленно возвращением в любом случае . В этой настройке вы должны проверить возвращаемый статус, чтобы узнать, действительно ли вы приобрели блокировку. В качестве примера:

 while ( ! flock($f, LOCK_NB) ) { sleep(1); } 

Будет более или менее эмулировать поведение обычного блокирующего вызова. Цель состоит в том, чтобы сделать что-то другое / значимое (а не просто ждать), пока файл по-прежнему заблокирован другим процессом.