2009-07-14 3 views
1

ich zur Zeit ein Stück jquery/js Code haben, der alle paar Sekunden (5) eine GET-Anforderung ausgeführt wird, für neue Daten suchen, die in der Macht kommen.„Schieben“ Code javascript von php

Gibt es einige So könnte ich PHP dazu bringen, den JavaScript-Code zu "pushen" oder zu signalisieren, wenn neue Posts verfügbar sind, anstatt alle paar Sekunden zu überprüfen, ob etwas Neues reingekommen ist?

Ein anderes Beispiel: Ich skaliere ein Bild für einen Benutzer. Ich möchte dem Benutzer Echtzeitdaten über den laufenden Prozess anzeigen - um Meldungen wie "Hochladen auf den Server", "Bildgröße ändern", "Bild speichern" anzuzeigen.

Irgendwelche Hilfe auf so etwas?

Antwort

4

Dies ist etwas, was Sie nicht tun möchten. Sei glücklich mit der 5 Sekunden Javascript Umfrage. Es ist wirklich der beste Weg, es zu tun.

+0

+1 stimme völlig zu –

+3

Nicht sehr informativ, obwohl. Der Grund, warum Sie nicht "pushen" möchten, ist, dass es extrem ressourcenintensiv ist, es kostet den Server und es kann die Verbindungsressourcen des Clients kosten.Wenn die 5-Sekunden-Umfrage funktioniert dann verwenden Sie es, nur wechseln, wenn Sie Dinge schneller als das wie eine hochwertige Inhouse-Broker-Intranet-Web-App benötigen. – Karl

+0

Gründe? zumindest kurz? –

6

Comet ist kann genau sein, was Sie brauchen.

Es funktioniert im Grunde durch den Server nicht sofort reagieren zu lassen, was die Möglichkeit offen zu halten, um Daten zur Zeit senden Sie es in bekommt.

Das Problem ist, dass Apache und IIS sind derzeit nicht sehr gut, dass viel im Umgang mit geöffnete Verbindungen. Schauen Sie sich usobans an.

+1

Es gibt eine Menge Nachteile bei der Verwendung von Comet oder Comet-ähnlichen Systemen, IMO. Wenn Sie nicht nahezu unbegrenzte Ressourcen wie Google haben, funktioniert diese Verbindung auf unbestimmte Zeit. In den meisten realen Situationen wird der Server ziehen. Dennoch, +1 – Randolpho

+1

Beachte, dass Comet ist nicht so einfach zu implementieren, außer Sie können nicht Apache oder ISS, sondern spezialisierte Server-Software, wie Meteor. – usoban

+0

Stimmt, ich kenne diese Nachteile. Aber das Polling alle fünf Sekunden kann auch ein Hit für die Performance sein, da immer eine neue Verbindung aufgebaut werden muss. – Dykam

0

Sie können eine Art von Comet Technik verwenden, aber das kann erfordern spezielle Überlegungen je nach Ihrer Belastung. Wenn Sie beispielsweise eine hohe Auslastung erwarten, müssen Sie möglicherweise Ihren Webserver so konfigurieren, dass er alle gleichzeitigen Verbindungen verarbeiten kann. Wenn Sie diese Art von Kontrolle über Ihren Webserver nicht haben, aber viel Verkehr erwarten, dann ist es am besten bei der Abfragetechnik zu bleiben.

Wenn Sie jedoch nur eine Seite einer kleinen Gruppe auflegen wollen ... dann probieren Sie eine dieser Kometen-Techniken aus. gibt es jQuery-Plug-Ins, die helfen können:

Comet and jQuery

0

Die einfachste Lösung zu leben mit Ihrer derzeit umgesetzt 5Sek Umfrage ist. Dies ist die einfachste Implementierung und funktioniert im Allgemeinen gut.

Eine weitere Option ist die Implementierung einer Version von "long-polling" ... wo der JavaScript-Code die Verbindung zum Server öffnet und offen lässt (der Server kann diese Verbindung verwenden, um Daten an den Client zu senden) ein unmittelbarerer Sinn). Wenn das Client-JavaScript erkennt, dass die Verbindung geschlossen ist (wegen Zeitüberschreitung), würde es einfach eine andere Verbindung zurück zum Server starten. Der Servercode muss in der Lage sein, die Menge der langabrufenden Clients zu handhaben und die gelegentliche Trennung der Clients (Warteschlangennachrichten für sie beim erneuten Herstellen der Verbindung) zu handhaben.

Schließlich gibt es die "Komet" -Lösungen, mit denen Sie serverseitigen Push zum Client tun können. Ich bin nicht bewusst, eine php-basierte Comet-Implementierung ...

1

Ich würde eine SaaS-Lösung empfehlen, wie WebSync On-Demand; frei für begrenzte Benutzer, funktioniert mit jeder Serversprache, keine Probleme mit der Einrichtung Ihres eigenen Servers, etc.