Этот вопрос закрыт для ответов, так как повторяет вопрос Зачем тут fclose(fopen($file, "a+b"));?
fapchat
@fapchat

Почему тут нужно использовать только r+ или r?

<?php ## Модель процесса-читателя.
$file = "file.txt";

// Вначале создаем пустой файл, ЕСЛИ ЕГО ЕЩЕ НЕТ.
// Если же файл существует, это его не разрушит.
fclose(fopen($file, "a+b"));

// Блокируем файл.
$f = fopen($file, "r+b") or die("Не могу открыть файл!");
flock($f, LOCK_SH); // ждем, пока не завершится писатель

  // . . .
  // В этой точке мы можем быть уверены, что в файл 
  // никто не пишет.
  // . . . 

// Все сделано. Снимаем блокировку.
fclose($f);
?>

автор призывает использовать тут только fopen($file, "r+b") или fopen($file, "rb"), но ведь при режиме a+, fseek() нормально работает для чтения, а в данном случае послеflock($f, LOCK_SH); и до fclose($f); файл используется только для чтения, почему тогда только r,или r+?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
miraage
@miraage
Старый прогер
Режимы r/r+ устанавливают указатель в начало файла, и позволяют писать в любую позицию, сдвинув указатель через fseek.

Режимы a/a+ устанавливают указатель в конец файла, и позволяют писать только в конце файла. fseek влияет только на чтение.

https://www.php.net/manual/en/function.fopen.php
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы