(PHP 5 >= 5.1.0, PHP 7, PHP 8)
SplFileObject::flock — Блокирует файл методом переносимой блокировки
Блокирует или разблокирует файл тем же переносимым способом, что и функция flock().
operation
operation принимает следующие значения:
LOCK_SH для получения разделяемой блокировки (чтение).
LOCK_EX для получения эксклюзивной блокировки (запись).
LOCK_UN для снятия блокировки (разделяемой или эксклюзивной).
Флаг LOCK_NB добавляют
как битовую маску к одной операции из списка выше,
если функция flock() не должна
блокироваться во время попытки блокировки файла.
wouldBlock
Получает значение true, если блокировка будет блокирующей
(в переменную errno будет записан код ошибки EWOULDBLOCK).
Функция возвращает true, если выполнилась успешно, или false, если возникла ошибка.
Пример #1 Пример использования метода SplFileObject::flock()
<?php
$file = new SplFileObject("/tmp/lock.txt", "w");
if ($file->flock(LOCK_EX)) { // Выполняем эксклюзивную блокировку
$file->ftruncate(0); // Очищаем файл
$file->fwrite("Пишем что-нибудь сюда\n");
$file->flock(LOCK_UN); // Снимаем блокировку
} else {
echo "Не удалось получить блокировку!";
}
?>