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.