Cache mit PHP-cURL
Ich bin mit der PHP-cURL-zum abrufen von Informationen von einer anderen website und legen Sie Sie in meine Seite. Ich Frage mich, ob es möglich war, haben die abgerufenen Daten zwischengespeichert auf meinem server? Zum Beispiel, wenn ein Benutzer fordert eine Seite, die Informationen abgerufen und zwischengespeichert auf meinem server für 24 Stunden. Die Seite ist dann komplett lokal bedient, für 24 Stunden. Wenn die 24 Stunden ablaufen, werden die Informationen wieder abgerufen und zwischengespeichert, wenn ein anderer Besucher es wünscht, werden in der gleichen Weise.
Den code, den ich momentan verwende zum abrufen der Informationen ist wie folgt:
$url = $fullURL;
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
Ist das möglich? Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Sie schreiben müssen, oder laden Sie eine php-caching-Bibliothek (wie erweiterbare php-caching-Bibliothek oder so), und passen Sie Ihren aktuellen code ein, um zunächst einen Blick auf den cache.
Angenommen der cache Bibliothek hat 2 Funktionen aufgerufen:
und
Mit
save_cache()
speichern Sie die $result in den cache und mitget_cache()
Sie die Daten abrufen.$cache_key
wäremd5($fullURL)
- eine eindeutige Kennung für die caching-library, um zu wissen, was Sie abrufen wollen.$timestamp
ist die Anzahl der Minuten/Stunden, die Sie wollen, dass der cache gültig sein, je nachdem, was Ihre caching-Bibliothek akzeptiert.Nun mit Ihrem code können Sie haben eine Logik wie:
Können Sie cache es mit memcache ( eine Sitzung), die Sie Zwischenspeichern können Sie es mit Dateien auf Ihrem server und Sie können den cache mithilfe einer Datenbank, wie mySQL.
Müssen Sie die Berechtigungen der Ordner, den Sie schreiben wollen, der Dateien, sonst erhalten Sie möglicherweise einige Fehler.
Dann, wenn Sie wollen, um aus dem cache gelesen:
Honza ' s Vorschlag, Nette cache funktionierte großartig für mich, und hier ist der code, den ich schrieb, um es zu verwenden. Meine Funktion liefert den HTTP-Ergebnis ob es geklappt hat, false wenn nicht. Sie haben Sie zu ändern, einige Pfad-strings.
Verwenden Nette Cache. Alles, was Sie brauchen-Lösung, einfach zu bedienen und natürlich - thread-safe.
Wenn Sie habe nichts gegen Zugriff auf das Dateisystem, können Sie einfach speichern Sie es in eine Datei. Dann vielleicht mit einem Skript auf dem server, der überprüft die Datei die Zeitstempel gegen die aktuelle Zeit und löscht es, wenn es zu alt ist.
Wenn Sie nicht über einen Internetzugang verfügen, um alle Aspekte des Servers sind, könnten Sie nur die oben genannte Idee, und speichern Sie einen Zeitstempel mit der info. Jedes mal, wenn die Seite angefordert wird check gegen den timestamp.
Und wenn Sie Probleme mit dem fs, Engpässen, könnten Sie mit einer MySQL-Datenbank gespeichert, die vollständig im RAM.
Der beste Weg zu vermeiden, ist die Zwischenspeicherung der Anwendung die Zeit oder irgendeine andere random-element auf die url wie folgt:
$url .= '?ts=' . time();
also zum Beispiel anstatt
http://example.com/content.php
Sie hätte
http://example.com/content.php?ts=1212434353