Как следует из названия, есть ли быстрый способ загрузить файл, но взять с собой временную метку?
Я пишу основной кэш, который, среди других проверок, определяет (через get_headers
) если данный локальный файл совпадает с его удаленным аналогом.
я знаю что могу file_get_contents
/ file_put_contents
а потом touch()
файл с результатами get_headers
, но вызов, который выполняет другой HTTP-вызов (даже если это вызов HEAD), и я хотел бы только проверить Last-Modified как последнее средство.
Так есть ли быстрый способ «одного HTTP-вызова» загрузить файл и сохранить временную метку? Некоторые удаленные файлы живут на FTP-сервере, но многие являются текстовыми файлами и / или живут на веб-сервере.
РЕДАКТИРОВАТЬ: Кто-то предложил связанный вопрос, но мой вопрос отличается в том, что я ищу, чтобы получить удаленную модифицированную дату без необходимости повторного вызова, который copy()
основанный ответ предполагает
$http_response_header
кажется, добивается цели, как предложено ниже.
Вы можете получить в кеше Last-Modified
от $http_response_header
и использовать его, чтобы коснуться файла.
Полностью автоматизировать его, очевидно, невозможно, так как поток не может знать, где вы собираетесь его хранить.
Вы можете использовать filemtime (), чтобы получить дату последнего изменения, а затем нажать (), чтобы изменить дату / время последнего изменения
Источник: PHP копия файла без изменения даты последнего изменения
if (file_exists($cache_file) && (filemtime($cache_file) > (time() - 60 * 5 ))) {
// Cache file is less than five minutes old.
// Don't bother refreshing, just use the file as-is.
$file = file_get_contents($cache_file);
} else {
// Our cache is out-of-date, so load the data from our remote server,
// and also save it over our cache for next time.
$file = file_get_contents($url);
file_put_contents($cache_file, $file, LOCK_EX);
}