Я заметил во время тестирования двух fopen()
дескрипторы на одном файле, что дескрипторы или каналы смешиваются, и содержимое файла пусто при вызове fread()
, Один дескриптор читается, а другой дескриптор пишется.
Пример кода:
$rh = fopen('existingfilewithcontent.txt', 'r');
$wh = fopen('existingfilewithcontent.txt', 'w');
echo fread($rh, 1000);
fclose($rh);
fclose($wh);
// file is now blank
Это проверено на Linux & Окна.
Я не мог найти ничего в PHP-документах об этом.
Пожалуйста, не спрашивайте меня, почему я хочу две ручки на одном файле, так как это не вопрос.
Спасибо
Открытие файла для записи разрушительно.
Руководство говорит:
«Ш» — Открыто только для записи; поместите указатель файла в начале файла и обрежьте файл до нулевой длины. Если файл не существует, попытайтесь создать его.
Вы, вероятно, хотите:
«Г +» — Открыт для чтения и письма; поместите указатель файла в начале файла.
ИЛИ ЖЕ
«А +» — Открыт для чтения и письма; поместите указатель файла в конец файла. Если файл не существует, попытайтесь создать его. В этом режиме fseek () влияет только на позицию чтения, запись всегда добавляется.
Смотрите руководство: http://php.net/manual/en/function.fopen.php
Других решений пока нет …