Хм. Представьте себе веб-сервер, на котором мы используем комбинацию PHP и, например, nodeJS. В nodeJS, когда мы получаем время модификации файла, оно включает миллисекунды. В PHP этого нет. Теперь предположим, что для любых больших файлов (много гигабайт), которые мы позволяем пользователю загружать, у нас есть и поддерживается соответствующий файл, содержащий предварительно рассчитанную контрольную сумму MD5 для всего файла. Мы сохраняем эту контрольную сумму в файле с тем же именем, что и исходный файл, но с добавлением размера и времени модификации файла. ВКЛЮЧАЯ МИЛЛИСЕКУНДЫ! (все это делается узлом)
Пример: GEBCO_2019.nc (11723617646 байт) и GEBCO_2019.nc.11723617646-2019-10-31T15-03-06.687Z.md5.
Теперь на странице загрузок мы решаем отобразить контрольную сумму MD5. Это использует PHP-код.
OH NO!!!
Мы вызываем filemtime, но, увы, мы не можем получить миллисекунды, поэтому мы не можем определить имя файла Md5.
МЫ МОГЛИ ИЗМЕНИТЬ КОД УЗЛА, чтобы игнорировать миллисекундную часть.
Это похоже на то, что недостаток PHP здесь заставляет нас выбирать меньший общий знаменатель, чем мы должны были бы.
Также исключительно УЖАСНО прибегать к запуску внешней программы только для того, чтобы получить время модификации файла. Если бы вам пришлось делать это 50 или 60 раз для загрузки одной страницы, я ожидаю, что это немного замедлит работу!!!
Теперь точность времени изменения файла, конечно, зависит от системы. PHP должен напрямую предоставить нам способ получить это время, и это серьезный недостаток, если он не может.
person
Dave Hussey
schedule
22.11.2019