Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Javascript- und PHP-Countdown-Timer, der für alle gleich angezeigt wird

Klingt so, als würden Sie einen COMET/Push benötigen Lösung, mit der Sie die aktiven Clients überwachen und ihnen neue Daten übermitteln können. Ich bin mir nicht sicher, ob PHP dafür die beste Lösung ist, da es andere Programmiersprachen gibt, die dies eleganter handhaben.

Siehe:Comet mit PHP verwenden?

Andere mögen anderer Meinung sein, aber Node.js ist eine hervorragende und kommende Lösung für diese spezielle Art von Problem. Kombinieren Sie Node.js mit Socket.io und Sie haben die grundlegenden Werkzeuge, um genau das zu implementieren, was Sie beschreiben.

Kurz gesagt, eine Clientanwendung sendet eine AJAX-Anfrage an einen Server. Der Server hält dann die Anfrage, bis er etwas zurückzugeben hat (in Ihrem Fall - Timer gestartet, Timer angekreuzt, Timer angehalten usw.). Sobald Daten zurückgegeben werden, wird eine weitere Anfrage gestellt und vom Server gespeichert, wodurch der Vorgang wiederholt wird. Wenn Ihr Server und Client WebSockets unterstützen , dann können gehaltene AJAX-Verbindungen zugunsten einer WebSocket (TCP over HTTP)-Verbindung vermieden werden.

Da nicht jeder die neueste Version von Chrome/Firefox verwendet, müssen Sie wahrscheinlich mehrere Push-Methoden unterstützen, um browserübergreifend kompatibel zu sein. Socket.io abstrahiert die Kommunikationsschicht (Comet – Long Polling, WebSockets, Adobe Flash Socket, Ajax Multipart Streaming, Forever Iframe, JSONP Polling) und wählt die beste Technologie basierend auf den Browserfähigkeiten des Clients aus.

Alternative

Sie können auch ein Javascript-Intervall verwenden, um den Server regelmäßig (über AJAX) abzufragen, um zu sehen, ob der Timer eingestellt wurde. Allerdings können Sie Ihren Server mit Anfragen überschwemmen, da jeder Client ständig den Server abfragt, um festzustellen, ob der 60-Sekunden-Timer gestartet wurde.