fwrite() работает 2 раза

felix0808

Создатель
Регистрация
19 Янв 2013
Сообщения
16
Реакции
0
Задача: просто занести строку "STR" в файл test.txt
запускаю на денвере
код:
Код:
<?php
    $c = fopen('test.txt', 'a+');
    fwrite($c, 'STR');
    fclose($c);
?>
Не пойму почему в итоге после каждого обновления страницы в файле test.txt
появляется STRSTR вместо STR.
Кто-нибудь знает из за чего так происходит?

да он почему то 2 раза вызывается, тк оригинальный код был такой
Код:
<?php
    $f = fopen('visits.txt', 'a+');
    fwrite($f, date("Y-m-d H:i:s") . "\n");
    fwrite($f, $_SERVER["REMOTE_ADDR"] . "\n");
    fwrite($f, $_SERVER["HTTP_REFERER"] . "\n");
    fclose($f);
?>
при переходе на страницу spy.php в visits.txt появляеются такие строки
Код:
2013-11-06 19:02:50
127.0.0.1

2013-11-06 19:02:50
127.0.0.1
http://phpspec/spy.php
то есть он первый раз заходит как положено, а потом почему то переходит еще раз на себя
 
Последнее редактирование:
Скорее всего из-за браузера, либо какого-то трассировщика. Например, инспекторы страниц Chrome и Opera могут дублировать запросы к сайту, чтобы отобразить информацию во вкладках сетевого обмена.
 
не a+
просто a поставь
У меня работает
 
'r' Открывает файл только для чтения; помещает указатель в начало файла.
'r+' Открывает файл для чтения и записи; помещает указатель в начало файла.
'w' Открывает файл только для записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует - пробует его создать.
'w+' Открывает файл для чтения и записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует - пытается его создать.
'a' Открывает файл только для записи; помещает указатель в конец файла. Если файл не существует - пытается его создать.
'a+' Открывает файл для чтения и записи; помещает указатель в конец файла. Если файл не существует - пытается его создать.
'x' Создаёт и открывает только для записи; помещает указатель в начало файла. Если файл уже существует, вызов fopen() закончится неудачей, вернёт FALSE и выдаст ошибку уровня E_WARNING. Если файл не существует, попытается его создать. Это эквивалентно указанию флагов O_EXCL|O_CREAT для внутреннего системного вызова open(2).
'x+' Создаёт и открывает для чтения и записи; иначе имеет то же поведение что и'x'.
'c' Открывает файл только для записи. Если файл не существует, то он создается. Если же файл существует, то он не обрезается (в отличии от 'w'), и вызов к этой функции не вызывает ошибку (также как и в случае с 'x'). Указатель на файл будет установлен на начало файла. Это может быть полезно при желании заблокировать файл (смотри flock()) перед изменением, так как использование 'w' может обрезать файл еще до того как была получена блокировка (если вы желаете обрезать файл, можно использовать функцию ftruncate() после запроса на блокировку).
'c+' Открывает файл для чтения и записи; иначе имеет то же поведение, что и 'c'.
Это ни при чём... Верный ответ дал Viodele. Как вариант, файл не удаляется перед записью, из-за чего после каждого запуска добавляется ещё 1 сточка...

Либо этот файл вызывается где-то два раза...
 
обновил 1 пост

UPD: хмм и правда тестировал в хроме, зашел в IE
запустил, все работает как положено.o_O
Теперь вопрос, как починить хром?:D
 
обновил 1 пост

UPD: хмм и правда тестировал в хроме, зашел в IE
запустил, все работает как положено.o_O
Теперь вопрос, как починить хром?:D
При отключенных плагинах и неактивной панели разработки хром вроде должен работать точно так-же, как и IE. Если это действительно панель разработки дает такой эффект(а скорее всего так и есть), то чинить там нечего. FF+FireBug в этом плане должен работать нормально, так как FireBug парсит именно входящую передачу данных, без лишних телодвижений.
 
Спасибо, отключил RDS и теперь все записывается как надо:)
 
Назад
Сверху