почему PHP fopen + fwrite двойной документ? - PullRequest
4 голосов
/ 30 апреля 2011

Я использую PHP версии 5.3.4 с Apache / 2.2.17 в Windows 7 Ultimate 32bit (IIS отключен).Я смотрел на режимы fopen и хорошо знаю, что делает этот режим, но я не могу понять, почему двойная публикация в текстовый файл с одним fwrite.Я даже пробовал режимы: w и c.

Теперь мне все равно, добавляются ли новые поступающие данные, добавляются ли они, пока они есть в файле без усечения существующих данных.

Реальный вопрос заключается в том, почему режим «а» вместо простого добавления новых данных записывает (дублирует) новые данные в файл дважды перед его закрытием.

В коде php:

$fh = "";
if(!($fh = fopen("list.txt","x")) // if file exists, just open for writing (prepend)
   $fh = fopen("list.txt","a"); // if not exist, open just for writing (append)

fwrite($fh,"Somthing\r\n"); // write to file (filehandle, "data")
fclose($fh); // close the file

Результаты:SomthingЧто-то

решено: нашел виновника: с моим кодированием все в порядке.Это было расширение html validator , которое я использовал для Chromium под Ubuntu 10.04.Это расширение, очевидно, вызывало нечто похожее на мгновенную перезагрузку страницы.

Ответы [ 2 ]

1 голос
/ 30 апреля 2011
$fh = fopen("list.txt","a");
fwrite($fh,"Somthing\n"); // write to file (filehandle, "data")
fclose($fh); // close the file

ваша логика была неверна.

Вот как это сделано, я надеюсь, что это работает для вас

0 голосов
/ 10 августа 2018

Я ценю, что этому уже лет, но эта проблема все еще известна, и есть еще одна причина, которая также может вызывать ее.У меня не было расширения, используемого @robx, отключены все мои расширения и никаких изменений - все равно двойные записи.Тем не менее, после прочтения этой темы о том, что это ошибка Chrome (https://bugs.chromium.org/p/chromium/issues/detail?id=64810), комментарий 16 предполагает, что проблема заключается в предварительной загрузке значка. Не идеально, но удалите тег ссылки значка избранного в заголовке документа, и он остановит двойные записи.

...