Почему время изменения файла не изменяется при записи в него частичного фрагмента?

У меня есть этот тестовый код:

function create_file($path, $size_b) {
$f = fopen($path, "w");
fseek($f, $size_b - 1, SEEK_CUR);
fwrite($f, "a");
fclose($f);
}

function write_file_chunk($path, $offset, $chunk) {
$f = fopen($path, "r+");
fseek($f, $offset, SEEK_CUR);
fwrite($f, $chunk);
fclose($f);
}

$name = "filemtime_test";
create_file($name, 128);
$m1 = filemtime($name);
sleep(1);
write_file_chunk($name, 0, "hey");
$m2 = filemtime($name);
echo $m1 . " " . $m2 . " " . ($m1 === $m2);

Частичная запись работает, я знаю, что она не меняет время изменения файлов, почему бы и нет? Есть ли другой способ обнаружить файл, который был изменен таким образом?

1

Решение

По соображениям производительности PHP кэширует эти данные, когда такие функции файловой информации вызываются несколько раз в одном и том же экземпляре скрипта.

http://php.net/manual/en/function.filemtime.php:

Примечание. Результаты этой функции кэшируются. Увидеть clearstatcache () Больше подробностей.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector