So da ich nicht genau weiß wo das hingehört und auch neu hier bin hoffe ich mal das ich bei PHP für Fortgeschrittene Hilfe bei der Lösung meines Problemes bekomme.
Vorab eine kurze Erklärung: Ich entwickel derzeit eine Seite auf der knapp 60 verschiedene Countdowns mit Namen abegrufen werden. Dazu wird aus einer MySQL Datenbank ein Name und ein Timestamp ausgelesen. Mit dem Timestamp und der aktuellen Zeit berechne ich dann die verbleibende Zeit für den Countdown und lasse diesen Runterzählen. Dazu benutze ich AJAX und JavaScript sowie MySQL abfragen in PHP.
Die Countdowns können jederzeit verändert werden indem der Timestamp um 30 Sekunden bei einer interaktion hochgesetzt wird.
Das Problem bei dem ganzen ist nun das alle Clients immer synchron sein müssen und es keine abweichung geben darf. Heißt bei einer veränderung des Timestamps müssen alle Clients in Echtzeit ihre Countdowns akutaliserien.
Bei meinem ersten Versuch hat dabei jeder Client über AJAX jede Sekunde auf die Datenbank zugegriffen und die neuen Timestamps in einen lokalen Array geschrieben. Dies hat zwar funktioniert jedoch kam bei 20 Nutzern meine Datenbank dann schon an ihre Grenze. (Waren einfach viel zu viele Abfragen).
Nach ein bisschen überlegen bin ich dann auf die Idee gekommen das die Clients ja nur aktualsiert werden müssen wenn sich an der Datenbank überhaupt was ändert. Habe dazu nur noch einen Datenbankzugriff der meine Timestamps in eine .data Datei schreibt sobald sich etwas ändern/ also jemand mit der Webseite interagiert. Die Clients greifen nun also jede Sekunde auf die datei zu lesen nur noch aus der Datei sekündlich alles ein anstatt aus der Datenbank.
Das Problem hierbei ist jetzt das es nicht ganz wie gewünscht funktioniert und ich denke aufgrund der Preformance die Aktualiserung eine Moment dauert wenn der Nutzer interagiert.
Ich hoffe einer hier hat eine Idee wie man das ganze eleganter Lösen kann.
Danke schonmal im Vorraus.
P.S Die letzte Idee die ich hatte war statt einer Datei die Timestamps in einem Serverseitigen Cache zu speichern auf denn die Clients jede Sekunde zugreifen. Habe davon leider nicht so viel ahnung und weiß daher nicht ob das überhaupt so funktioniert wie ich es mir vorstelle.
Vorab eine kurze Erklärung: Ich entwickel derzeit eine Seite auf der knapp 60 verschiedene Countdowns mit Namen abegrufen werden. Dazu wird aus einer MySQL Datenbank ein Name und ein Timestamp ausgelesen. Mit dem Timestamp und der aktuellen Zeit berechne ich dann die verbleibende Zeit für den Countdown und lasse diesen Runterzählen. Dazu benutze ich AJAX und JavaScript sowie MySQL abfragen in PHP.
Die Countdowns können jederzeit verändert werden indem der Timestamp um 30 Sekunden bei einer interaktion hochgesetzt wird.
Das Problem bei dem ganzen ist nun das alle Clients immer synchron sein müssen und es keine abweichung geben darf. Heißt bei einer veränderung des Timestamps müssen alle Clients in Echtzeit ihre Countdowns akutaliserien.
Bei meinem ersten Versuch hat dabei jeder Client über AJAX jede Sekunde auf die Datenbank zugegriffen und die neuen Timestamps in einen lokalen Array geschrieben. Dies hat zwar funktioniert jedoch kam bei 20 Nutzern meine Datenbank dann schon an ihre Grenze. (Waren einfach viel zu viele Abfragen).
Nach ein bisschen überlegen bin ich dann auf die Idee gekommen das die Clients ja nur aktualsiert werden müssen wenn sich an der Datenbank überhaupt was ändert. Habe dazu nur noch einen Datenbankzugriff der meine Timestamps in eine .data Datei schreibt sobald sich etwas ändern/ also jemand mit der Webseite interagiert. Die Clients greifen nun also jede Sekunde auf die datei zu lesen nur noch aus der Datei sekündlich alles ein anstatt aus der Datenbank.
Das Problem hierbei ist jetzt das es nicht ganz wie gewünscht funktioniert und ich denke aufgrund der Preformance die Aktualiserung eine Moment dauert wenn der Nutzer interagiert.
Ich hoffe einer hier hat eine Idee wie man das ganze eleganter Lösen kann.
Danke schonmal im Vorraus.
P.S Die letzte Idee die ich hatte war statt einer Datei die Timestamps in einem Serverseitigen Cache zu speichern auf denn die Clients jede Sekunde zugreifen. Habe davon leider nicht so viel ahnung und weiß daher nicht ob das überhaupt so funktioniert wie ich es mir vorstelle.
Kommentar