Ich möchte das Datum der letzten Änderung einer Remote-Datei mit Hilfe von curl erhalten. Weiß jemand, wie man das macht?Das Datum der letzten Änderung einer Remote-Datei erhalten
Antwort
Von php's article:
<?php
// outputs e.g. somefile.txt was last modified: December 29 2002 22:16:23.
$filename = 'somefile.txt';
if (file_exists($filename)) {
echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}
?>
filemtime() ist hier der Schlüssel. Aber ich bin mir nicht sicher, ob Sie das letzte Änderungsdatum einer entfernten Datei erhalten können, da der Server es Ihnen senden sollte ... Vielleicht in den HTTP-Headern?
Sie könnten wahrscheinlich etwas tun curl_getinfo()
mit:
<?php
$curl = curl_init('http://www.example.com/filename.txt');
//don't fetch the actual page, you only want headers
curl_setopt($curl, CURLOPT_NOBODY, true);
//stop it from outputting stuff to stdout
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// attempt to retrieve the modification date
curl_setopt($curl, CURLOPT_FILETIME, true);
$result = curl_exec($curl);
if ($result === false) {
die (curl_error($curl));
}
$timestamp = curl_getinfo($curl, CURLINFO_FILETIME);
if ($timestamp != -1) { //otherwise unknown
echo date("Y-m-d H:i:s", $timestamp); //etc
}
Ich habe bemerkt, dass dieser Code manchmal nicht funktioniert, native PHP get_headers funktioniert Besser für mich. – Pons
wäre so etwas wie dieses Werk, von web developer forum
<? $last_modified = filemtime("content.php"); print("Last Updated - ");
print(date("m/d/y", $last_modified)); ?
// OR
$last_modified = filemtime(__FILE__);
der Link auf einige nützliche Insite bietet können sie
Sie können den Empfang der Header der Antwort mit curl_setopt($handle, CURLOPT_HEADER, true)
aktivieren. Sie können CURLOPT_NOBODY auch aktivieren, um nur die Header zu erhalten, und danach das Ergebnis durch \ r \ n auflösen und die einzelnen Header interpretieren. Der Header Last-Modified
ist derjenige, der Sie interessiert sind
Yep - nur die Header –
Angenommen, sie senden die Last-Modified-Header –
In PHP Sie die native Funktion können get_headers()
.
<?php
$h = get_headers($url, 1);
$dt = NULL;
if (!($h || strstr($h[0], '200') === FALSE)) {
$dt = new \DateTime($h['Last-Modified']);//php 5.3
}
"Wenn" Bedingung nicht richtig funktioniert ... 'If (! $ H || strpos ($ h [0], '200')! == false) {'funktioniert besser für mich! – dino
Dino ist richtig. Es sieht so aus, als ob ein "!" - Operator versehentlich im obigen Code weggelassen wurde. Die if-Anweisung sollte wirklich 'if (! (! $ H || strstr ($ h [0], '200') === FALSE)) {' – Steven
Könnte den kleinen Code aus Pons kombinieren und hinzufügen auch. 'if (strtolower (trim ($ k)) == 'last-modified')' – Armstrongest
Manchmal mit unterschiedlichen oberen Kleinbuchstaben kommen header, sollte dies helfen:
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;
}
}
}
Durch Antwort der Bearbeitung h4kuna ich diese erstellt:
$fileURL='http://www.yahoo.com';
$headers = get_headers($fileURL, 1);
$date = "Error";
//echo "<pre>"; print_r($headers); echo "</pre>";
if ($headers && (strpos($headers[0],'200') !== FALSE)) {
$time=strtotime($headers['Last-Modified']);
$date=date("d-m-Y H:i:s", $time);
}
echo 'file: <a href="'.$fileURL.'" target="_blank">'.$fileURL.'</a> (Last-Modified: '.$date.')<br>';
Hatte ähnliches Problem zu lösen, aber für mich Download einmal am Tag war genug, also verglich ich nur den Modifiziertag der lokalen (heruntergeladenen) Cache-Datei. Die Remote-Datei hatte keinen Last-Modified-Header.
$xml = 'test.xml';
if (is_file($xml) || date('d', filemtime($xml)) != date('d')) {
$xml = file_get_contents(REMOTE_URL);
}
- 1. Erhalten einer Datei Datum der letzten Änderung
- 2. Erste das Datum der letzten Änderung einer Datei in C
- 3. Datum der letzten Änderung der Dateien im Verzeichnis mit PHP
- 4. Joomla - Datum der letzten Änderung der Kategorie hinzufügen
- 5. Datum der letzten Änderung der Datei (Explorerwert nicht Cmd-Wert)
- 6. Das Datum/die Uhrzeit der letzten Änderung an einer MySQL-Datenbank abrufen
- 7. Finden Sie das Datum der letzten Änderung einer Datei in Kakao
- 8. Datum der letzten Änderung eines Verzeichnisses in OSX
- 9. ordentliche Weise, das Datum des letzten Freitag zu erhalten
- 10. Benötigen Sie das neueste Datum der Änderung der Kategorie (nachträgliche Änderung) für 10000 Kategorien
- 11. Groovy HTTPBuilder erhalten letzte Änderung Datum
- 12. Datum der letzten Änderung einer Datei von UNIX auf lokale Zeitzone übertragen
- 13. SQL: Finden min Datum einer letzten Typänderung
- 14. Cache Control Ablaufen mit der letzten Änderung
- 15. Erhalten letzten Teil der URI
- 16. Datum des letzten Push auf Github Pull Request erhalten
- 17. Google Blätter Datum der letzten Änderung für bestimmte Blatt und starten Sie in Zeile 2
- 18. MySQL Filter nach Datum der letzten Aufzeichnung
- 19. Ich möchte oben Datum der letzten Änderung und Zeit zu diesem Powershell-Skript
- 20. Flex: Datum der Kompilierung erhalten?
- 21. Erhalten letzten drei Ziffern einer ganzen Zahl
- 22. jQuery erhalten letzten Teil der URL
- 23. Wert während der JQuery-Änderung erhalten
- 24. Überwachen Sie das Datum in Flex für eine Änderung
- 25. CROSS APPLY das neueste Datum erhalten
- 26. Ändern Sie das Datum bei Änderung des Werts in Excel
- 27. Stop javascript Datum Funktion von der Änderung der Zeitzone Offset
- 28. Wert der letzten Option eines Dropdowns erhalten?
- 29. Wie bekomme ich das Python-Datum-Objekt für letzten Mittwoch
- 30. Erhalten Sie den letzten Datensatz für jedes Datum aus einer Tabelle
Aus dem Handbuch: "Ab PHP 5.0.0 kann diese Funktion auch mit * einigen * URL Wrapper verwendet werden." – nickf
Für meine Erfahrung funktioniert diese Methode nicht immer (es hängt von Ihrer php.ini ab), also arbeiteten native get_headers besser für mich. – Pons
@Pons, ich stimme zu, es funktioniert nicht mit mir –