Filectime vs filemtime для времени изменения файла?
Я пытаюсь обеспечить, чтобы некоторые изображения не кэшировались, когда они были изменены, но которые были бы более подходящими для этого filectime
или filemtime
?
Я не вижу большой разницы в руководствах php? Было бы быстрее?
<img src="/images/123.png?<?=md5(@filectime("/images/123.png"))?>" />
<img src="/images/123.png?<?=md5(@filemtime("/images/123.png"))?>" />
Также есть функция вроде этого, которая не испускает ошибку e_warning
on file?
В идеале я не хочу когда-либо служить только вопросительным знаком <img src="/images/123.png?" />
Ответы
Ответ 1
Поскольку вы имеете дело с кешированием изображений, filectime не подходит - он отмечает последний раз
когда разрешения, владелец, группа или другие метаданные из inode обновляется
Вы хотите узнать, изменилось ли содержимое файла изображения - если оно было изменено, обрезано или полностью заменено.
Следовательно, filemtime больше подходит для вашего приложения:
когда записываются блоки данных файла, то есть время, когда содержимое файла было изменено
Если вы не хотите? чтобы всегда отображаться, сначала установите filemtime в переменную и протестируйте ее:
$filemtime = @filemtime("/images/123.png");
<img src="/images/123.png<?= $filemtime ? '?' . $filemtime : ''?>" />
Еще лучше проверьте наличие файла с файлом_exists() перед запуском filemtime
Ответ 2
Примечание. В большинстве файловых систем Unix файл считается измененным когда его данные inode изменены; то есть когда разрешения, владелец, группа или другие метаданные из индексного дескриптора. Смотрите также filemtime() (именно это вы хотите использовать, когда хотите создать "Последние изменения" на веб-страницах) и fileatime().
Из руководства
Итак, вы хотите использовать filemtime
.