ВНИМАНИЕ: Запись на курсы по HTML, CSS, JavaScript, PHP, Python, React, Vue, Laravel и другим фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
310 of 410 menu
Новый формат обучения! Репетиторство по программированию. Есть еще 3 свободных места! Жми для подробностей.

Функция flock

Функция flock устанавливает или снимает блокировку файла. Первым параметром она принимает указатель на файл, полученный через fopen, вторым параметром - тип блокировки (LOCK_SH, LOCK_EX или LOCK_UN), а третьим необязательным параметром - флаг для неблокирующей операции.

Синтаксис

flock(resource $handle, int $operation, int &$would_block = null): bool

Пример

Блокировка файла для эксклюзивного доступа (записи):

<?php $file = fopen("data.txt", "c+"); if (flock($file, LOCK_EX)) { ftruncate($file, 0); fwrite($file, "New data"); flock($file, LOCK_UN); } fclose($file); ?>

Пример

Разделяемая блокировка для чтения:

<?php $file = fopen("data.txt", "r"); if (flock($file, LOCK_SH)) { $content = fread($file, filesize("data.txt")); flock($file, LOCK_UN); } fclose($file); echo $content; ?>

Пример

Неблокирующая попытка захвата блокировки:

<?php $file = fopen("data.txt", "c+"); if (flock($file, LOCK_EX | LOCK_NB, $would_block)) { if ($would_block) { echo "File is locked by another process"; } else { fwrite($file, "Data"); flock($file, LOCK_UN); } } fclose($file); ?>

Смотрите также

  • функцию fopen,
    которая открывает файл
  • функцию fclose,
    которая закрывает файл
  • функцию is_writable,
    которая проверяет возможность записи
byenru