@nera4llife
Сторонник гелиоцентр

Почему file_put_contents увеличивает число на единицу?

Читаю цифру из текстового файла. Добавляю ее к названию, увеличиваю на один и записываю обратно в файл.
$numb = file_get_contents(APP_PATH . '/conf/uniq_id.txt');
echo $numb, '<br>'; // допустим 7
$numb = (int) $numb;
echo $numb, '<br>'; // 7
$numb += 1; // пробовал numb++, nubm = numb + 1
echo $numb, '<br>'; // 8

file_put_contents(APP_PATH . '/conf/uniq_id.txt', $numb);
// а в файл записывается 9


И так каждый раз. При записи в файл цифра увеличивается еще на один. Почему так происходит?
  • Вопрос задан
  • 124 просмотра
Решения вопроса 2
@pantsarny
Вы вызываете скрипт через консоль или браузер ?
Если через браузер - может ли быть такое , что запрос к favicon.ico вызывает данный скрипт? В таком случае у вас происходит вызов скрипта дважды
Ответ написан
Комментировать
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Если хотите продиагностировать проблему, то можно добавить логирование вызова кода
Создайте файл /conf/backtrace.txt
file_put_contents(APP_PATH . '/conf/uniq_id.txt', $numb);

//логируем стек вызовов
        ob_start();
        debug_print_backtrace();
        $trace = ob_get_contents();
        ob_end_clean();

file_put_contents(APP_PATH . '/conf/backtrace.txt', $trace, FILE_APPEND);


Но чудес не бывает. Если каждый раз получаете +2 то это может быть только потому что по какой-то причине код исполняется дважды.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы