Ottieni l’ultima data di modifica di un file remoto

Mi piacerebbe ottenere l’ultima data di modifica di un file remoto tramite arricciatura. Qualcuno sa come farlo?

Dall’articolo di php :

 

filemtime () è la chiave qui. Ma non sono sicuro di poter ottenere l’ultima data di modifica di un file remoto , poiché il server dovrebbe inviarlo … Forse nelle intestazioni HTTP?

Probabilmente potresti fare qualcosa di simile usando curl_getinfo() :

  

In PHP puoi usare la funzione nativa get_headers() :

  

Puoi triggersre ricevere le intestazioni della risposta con curl_setopt($handle, CURLOPT_HEADER, true) . Puoi anche triggersre CURLOPT_NOBODY per ricevere solo le intestazioni e, successivamente, esplodere il risultato per \ r \ n e interpretare le singole intestazioni. L’intestazione Last-Modified è quella che ti interessa.

A volte l’intestazione viene fornito con lettere maiuscole e minuscole diverse, questo dovrebbe aiutare:

 function remoteFileData($f) { $h = get_headers($f, 1); if (stristr($h[0], '200')) { foreach($h as $k=>$v) { if(strtolower(trim($k))=="last-modified") return $v; } } } 

Modificando la risposta di h4kuna ho creato questo:

 $fileURL='http://www.yahoo.com'; $headers = get_headers($fileURL, 1); $date = "Error"; //echo "
"; print_r($headers); echo "

"; if ( $headers && (strpos($headers[0],'200') !== FALSE) ) { $time=strtotime($headers['Last-Modified']); $date=date("dmY H:i:s", $time); } echo 'file: https://stackoverflow.com/questions/845220/get-the-last-modified-date-of-a-remote-file/'.$fileURL.' (Last-Modified: '.$date.')
';

sarebbe qualcosa di simile a questo lavoro, dal forum degli sviluppatori web

  

il link fornisce alcuni insiti utili su cui puoi usarli

Dovevo risolvere un problema simile, ma per me scaricare una volta al giorno era sufficiente, quindi ho confrontato solo il giorno della modifica del file di cache locale (scaricato). Il file remoto non aveva un’intestazione Last-Modified.

 $xml = 'test.xml'; if (is_file($xml) || date('d', filemtime($xml)) != date('d')) { $xml = file_get_contents(REMOTE_URL); }