Como sugiere el nombre, ¿existe una forma rápida de descargar un archivo, pero llevar la marca de tiempo?

Estoy escribiendo una caché básica que, entre otras comprobaciones, determina (a través de get_headers) si un archivo local dado es el mismo que su contraparte remota.

Sé que puedo file_get_contents / file_put_contents y luego touch() el archivo con los resultados de get_headers, pero la llamada que está haciendo otra llamada HTTP (incluso si es un HEAD call) y solo me gustaría probar Last-Modified como último recurso.

Entonces, ¿existe una forma rápida de "una llamada HTTP" para descargar un archivo y conservar la marca de tiempo? Algunos archivos remotos viven en un servidor FTP, pero muchos son archivos de texto y / o viven en un servidor web.

EDITAR: Alguien sugirió una pregunta relacionada, pero mi pregunta difiere, ya que estoy buscando obtener la fecha de modificación remota sin tener que hacer una segunda llamada, lo que sugiere la respuesta basada en copy()

$http_response_header parece hacer el truco, como se sugiere a continuación.

2
Grayda 29 ene. 2016 a las 14:22

3 respuestas

La mejor respuesta

Puede obtenerlo en caché Last-Modified desde $http_response_header y utilícelo para tocar el archivo.

Es obvio que no es posible automatizarlo por completo, ya que la transmisión no puede saber dónde lo va a almacenar.

1
Zbynek Vyskovsky - kvr000 29 ene. 2016 a las 11:29
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);
}
0
Vasim Shaikh 29 ene. 2016 a las 11:29

Puede usar filemtime () para obtener la fecha de la última modificación y luego tocar () para modificar la fecha / hora de la última modificación

Fuente: archivo de copia PHP sin cambiar la fecha de la última modificación

0
Community 23 may. 2017 a las 12:04