PHP Daten im 24 Stunden takt abrufen | geht dies?

paulick10

Cadet 4th Year
Registriert
März 2017
Beiträge
88
Moin Leute,

Ich baue gerade eine Webseite und habe ein Problemchen.
Die Ladezeit ist aufgrund von Statistiken die erst von einem Server abgeruft werden müssen deutlich zu lange.
http://www.franzpaulick.de/ozkar
Dafür benutze ich den Befehl

Code:
<?php
$serverinfo = json_decode(file_get_contents('https://api.r6stats.com/api/v1/players/SNK-ClanTag?platform=uplay'));
?>

Da dieses jedes mal beim Laden der Seite erst abgeruft wird dauert dies relativ lange.
Nun zu meiner Frage:

Variante 1
Ist es möglich die Stats im Hintergrund laden zu lassen, also das die Seite "normal" schnell Lädt aber die Statistik erst ca. 5 Sekunden später auftaucht.

Variante 2
Ist es möglich die Statistiken nur einmal Täglich abzurufen so das sie nicht beim Laden der Seite abgeruft werden müssen sondern selbständig im 24h Takt sich aktualiersiert.

Variante 3
Habt Ihr vielleicht eine bessere Idee?


Falls jemand eine Idee hat, würde ich mich freuen!

Danke und ein schönes Wochende euch! :)
 
Moin,
ja das ist möglich.
Du kannst die Daten z.B. per AJAX abholen.
Oder Du baust Dir, falls möglich, einen Cronjob, der die Daten alle 24h abholt und auf Deinem Server ablegt.
 
Ich habe gerade nach AJAX gegoogelt aber verstehe nicht das Prinzip?

Welche der oben genannten Varianten wäre dies dann?

Wenn das nur eins, zwei Zeilen Code sind, würdest du mir kurz erläutern wie ich dies umsetzen könnte?

Danke
 
paulick10 schrieb:
Variante 2
Ist es möglich die Statistiken nur einmal Täglich abzurufen so das sie nicht beim Laden der Seite abgeruft werden müssen sondern selbständig im 24h Takt sich aktualiersiert.
Klar, speicher das Ergebnis zwischen und bei jedem neuen Aufruf der Seite prüfst du das aktuelle Änderungsdatum und aktualisierst nur, wenn du über Zeit x kommst. Via Ajax würde ich die Daten aber trotzdem abrufen. Ein Cronjob zusätzlich wäre natürlich das Optimum. Das erste Script baut die Seite dann zügig auf, das Zweite holt lediglich die lokalen Daten und schiebt sie zum Client und der Cron aktualisiert.
 
Wenn beides nicht möglich/gewollt ist, kann man die Datei auch im Script selbst cachen.
Dazu einfach einen Check einbauen ob für Heute schon eine Datei abgerufen wurde (entweder anhand Dateinamen oder Änderungsstempel). Wenn ja verwendet man die runtergeladene Datei auf dem Server, wenn nicht lädt man sie runter, speichert sie ab und verwendet sie dann.

Das hat den Vorteil dass man nix neues bauen muss was noch lokal läuft und auch keinen Cron zugriff braucht (was man bei shared hosting oft nicht hat). Der "Nachteil" ist, dass der erste der nach 0 Uhr auf die Seite kommt eben warten muss bis die Datei aktuell ist, alle weiteren merken davon aber nix.
 
paulick10 schrieb:
Ich habe gerade nach AJAX gegoogelt aber verstehe nicht das Prinzip?

Welche der oben genannten Varianten wäre dies dann?

Das wäre Variante 1.
Die Seite muss halt nicht warten, bis die Daten geladen sind bevor weiter geparst wird.
Die Daten werden asynchron geladen.

Ganz guter Artikel zu dem Thema:
http://happycoding.io/tutorials/javascript/ajax
 
Also ich würde den API Aufruf ja komplett von der Seite abkoppeln. Also Cronjob, welcher ein PHP-Script auruft, welches die Daten lädt, und dann lokal speichert. Die Eigentliche Seite holt die dann von da, und muss gar nicht erst auf die API zugreifen.

Falls das nicht möglich ist, dann wie Mihawk90 schon sagte, nicht jedesmal neu laden, sonder für x Zeit lokal cachen. Das könntest du auch noch mit AJAX umsetzen, so dass dann halt beim ersten Aufrufer ein "Daten werden geladen" kommt, statt dass die Seite an sich lange braucht.

In beiden fällen legst du das Laden der Daten in ein eigenes Script, welches:

1. Checkt ob lokale Daten zu alt sind
1.1. Wenn ja neue von der API lädt und lokal speichert
(Falls AJAX) 2. Daten ausgibt
 
Zuletzt bearbeitet:
Zurück
Oben