почему PHP fopen + fwrite двойной документ?
Я использую PHP версии 5.3.4 с Apache/2.2.17 в 32-разрядной версии Windows 7 Ultimate (IIS отключен). Я смотрел на режимы fopen и хорошо знаю, какой режим что делает, но я не могу понять, почему двойная запись в текстовый файл с одной записью. Я даже пробовал режимы: 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
Результаты:
Что-то
Что-то
РЕШЕНО: Нашел виновника: с моим кодированием все было в порядке. Это было расширение html-валидатора, которое я использовал для Chromium в Ubuntu 10.04. Это расширение, по-видимому, вызывало нечто похожее на мгновенную перезагрузку страницы.
2 answers
$fh = fopen("list.txt","a");
fwrite($fh,"Somthing\n"); // write to file (filehandle, "data")
fclose($fh); // close the file
Ваша логика была неправильной.
Вот как это делается, я надеюсь, что это сработает для вас
Я ценю, что этому уже много лет, но известно, что эта проблема все еще возникает, и есть еще одна причина, которая также может ее вызвать. У меня не было расширения, используемого @robx, отключил все мои расширения и никаких изменений - все равно двойные записи. Однако, прочитав эту тему о том, что это ошибка Chrome (https://bugs.chromium.org/p/chromium/issues/detail?id=64810 ) комментарий 16 предполагает, что проблема заключается в предварительном выборе значка. Не идеально, но удалите тег ссылки на значок избранного в заголовок документа и он останавливает двойные записи.