Задать вопрос
@Shimpanze

Может ли, во время чтения файла одним скриптом, другой скрипт начать записывать в этот файл новые данные?

Может ли, во время чтения файла одним скриптом, другой скрипт начать записывать в этот файл новые данные?
И как защититься от этого?

Например, функция file_get_contents().
  • Вопрос задан
  • 213 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
@rPman
первым, кто открывает файл, должен использовать функцию flock над идентификатором файла fopen
$file = fopen('filename.txt', 'r');
// пробуем установить эксклюзивную блокировку
if (flock($file, LOCK_EX)) {
    // выполнение операций чтения
    // ...
    
    // освобождаем блокировку
    flock($file, LOCK_UN);
} else {
    echo "Не удалось установить блокировку на файл.\n";
}
fclose($file);


это системная фича posix, не привязанная к языку программирования

p.s. аналогичные механизмы есть у windows, при открытии файла указывается тип блокировки shared...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы