17_planet
@17_planet
Full Stack Developer, web-studio in Odessa

PHP: как нормально определить размер файла?

Есть код, и он работает не совсем так как хотелось.
Вот чисто ради для теста записал так (было много разных вариантов, особенно с размещением clearstatcache):
$file = 'test/main.tpl';
var_dump(filesize($file));
clearstatcache();
if (file_exists($file)) {
    $handle = fopen($file, "w+") or die("Unable to open file!");
} else {
    $handle = fopen($file, "x") or die("Unable to create file!");
}

clearstatcache();
var_dump($file);
clearstatcache();
var_dump(filesize($file));
if (filesize($file)) {
    $str_old_contains = fread($handle, filesize($file));
    var_dump($str);
} else {
    echo('error_size : ' . filesize($file));
    $str_old_contains = '';
}

fwrite($handle, $str_old_contains . "fear!!! things!\r\n");
clearstatcache();
fclose($handle);


Результат такой:
int 17
string 'test/main.tpl' (length=13)
int 0
error_size : 0

Суть в том, если допустим убрать первый var_dump, то потом по коду он не может определить размер файла — возвращаемый результат ноль (не false, и файл не пустой — две строки).

Что я делаю не так я так и не смог нагуглить. Подскажите советами где какой вызов должен быть.
Я всего лишь хотел, чтобы при отсутсвии файла он создавался, а при его не нулевом размере считывалось его содержание, немного изменялось и перезаписывалось.
  • Вопрос задан
  • 2349 просмотров
Решения вопроса 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
'w+' Открывает файл для чтения и записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует - пытается его создать.
php.net/manual/ru/function.fopen.php
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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