Verbindungsabbruch
cyRus
- php
0 Andreas Korthaus0 cyRus
0 fastix
(Keine Ahnung, ob dies dafür der richtige Themenbereich ist)...
Also ich hab einen Chat in PHP gebastelt, arbeitet mit einer Datenbank, nutzt kein meta refresh zum aktualisieren der Nachrichten sondern holt die Nachrichten von der Datenbank im Millisekunden-Takt. (flush(), usleep())Das Problem: Da ja die Verbindung nicht abbrechen darf, steht immer brav in der Statuszeile Öffne Seite bla?bla=bla... soweit so gut. Nur dann aufeinmal steht in der Statusleiste Fertig, es kommen keine neuen Nachrichten mehr an. Nur wenn man etwas erneutes schreibt, beginnt der Stream (machmal) wieder neue Daten zu holen. Das PHP-Script bricht dabei allerdings nicht ab, alle geschriebenen Nachrichten werden richtig gespeichert. Nur der Browser macht, was wer will. Kann man irgendwie eine Verbindung erzwingen? (Bei mehrenen Testern mit IE 5 & 6)
Hallo!
Also ich hab einen Chat in PHP gebastelt, arbeitet mit einer Datenbank, nutzt kein meta refresh zum aktualisieren der Nachrichten sondern holt die Nachrichten von der Datenbank im Millisekunden-Takt. (flush(), usleep())Das Problem: Da ja die Verbindung nicht abbrechen darf, steht immer brav in der Statuszeile Öffne Seite bla?bla=bla... soweit so gut.
gut nennst Du das? Dazu ist HTTP ganz und gar nicht gedacht und nicht geeignet. Ganz zu schweigen von Deinem Server, den für nichts und wieder nicht derart zu belasten kann es nicht sein.
Nur dann aufeinmal steht in der Statusleiste Fertig, es kommen keine neuen Nachrichten mehr an. Nur wenn man etwas erneutes schreibt, beginnt der Stream (machmal) wieder neue Daten zu holen.
Das liegt an dem Timeout, von wem auch immer, da gibt es einige Programme die was dagegen haben das Du sowas machst!
Das PHP-Script bricht dabei allerdings nicht ab, alle geschriebenen Nachrichten werden richtig gespeichert.
Das bricht auch irgendwann ab.
Nur der Browser macht, was wer will. Kann man irgendwie eine Verbindung erzwingen? (Bei mehrenen Testern mit IE 5 & 6)
zum Glück nicht! Sowas funktioniert nicht mit HTTP. Es gibt Möglichkeiten das ganze z.B. über Aktualisierungen zu machen, aber das erzeugt zig mal so viel Traffic und Last wie eine richtige Lösung(z.B. IRC), HTTP ist hierfür schlichtweg das falsche Protokoll. Wenn es denn im Browser sein muß, dann mit Flash oder Java, die eigene Socket-Verbindungen über andere Protokolle aufbauen können, aber das ist nicht ganz so einfach(ich kann es nicht).
Aber vermutlich wird Cheatah noch was dazu sagen *g*
Grüße
Andreas
Hallo!
Also ich hab einen Chat in PHP gebastelt, arbeitet mit einer Datenbank, nutzt kein meta refresh zum aktualisieren der Nachrichten sondern holt die Nachrichten von der Datenbank im Millisekunden-Takt. (flush(), usleep())Das Problem: Da ja die Verbindung nicht abbrechen darf, steht immer brav in der Statuszeile Öffne Seite bla?bla=bla... soweit so gut.
gut nennst Du das? Dazu ist HTTP ganz und gar nicht gedacht und nicht geeignet. Ganz zu schweigen von Deinem Server, den für nichts und wieder nicht derart zu belasten kann es nicht sein.Nur dann aufeinmal steht in der Statusleiste Fertig, es kommen keine neuen Nachrichten mehr an. Nur wenn man etwas erneutes schreibt, beginnt der Stream (machmal) wieder neue Daten zu holen.
Das liegt an dem Timeout, von wem auch immer, da gibt es einige Programme die was dagegen haben das Du sowas machst!Das PHP-Script bricht dabei allerdings nicht ab, alle geschriebenen Nachrichten werden richtig gespeichert.
Das bricht auch irgendwann ab.Nur der Browser macht, was wer will. Kann man irgendwie eine Verbindung erzwingen? (Bei mehrenen Testern mit IE 5 & 6)
zum Glück nicht! Sowas funktioniert nicht mit HTTP. Es gibt Möglichkeiten das ganze z.B. über Aktualisierungen zu machen, aber das erzeugt zig mal so viel Traffic und Last wie eine richtige Lösung(z.B. IRC), HTTP ist hierfür schlichtweg das falsche Protokoll. Wenn es denn im Browser sein muß, dann mit Flash oder Java, die eigene Socket-Verbindungen über andere Protokolle aufbauen können, aber das ist nicht ganz so einfach(ich kann es nicht).Aber vermutlich wird Cheatah noch was dazu sagen *g*
Grüße
Andreas
Das ganze meinen Server umbringt kann schon sein, ich bin mir dessen auch bewusst... Das es an dem Timeout liegt: Müsste dann nicht das Script ganz abbrechen? Das tut es ja nicht, die Nachrichten kommen - aber verzögert... (Außerdem läuft es nach 5 h immer noch, nur ab und zu kommt dieser Fehler, und ein Timeout kommt doch nach ner festen Zeit, der Fehler kommt aber zu unterschiedlichen Zeiten)Ich bekomm auch keine Fehlermeldung, dass es 30 Sek oder so gelaufen ist... mazenphp.de hat es ja auch irgendwie geschafft, den Timeout zu unterbinden...
sondern holt die Nachrichten von der Datenbank im Millisekunden-Takt. (flush(), usleep())Das Problem: Da ja die Verbindung nicht abbrechen darf, steht immer brav in der Statuszeile Öffne Seite bla?bla=bla...
Extremist! Terrorist! Du bekommst jeden Server in die Knie!
Was machst Du bei zwei Usern (oder zehn). Oder hundert?
Mit dem Script bekommst eventuell sogar Ärger beim Hoster, wenn du nicht einen eigenen Server dort laufen hast. Und wenn Du bei meinem bist, dann haut er Dir die Protokolle hoffentlich richtig um die Nase!
PHP bricht nach einigen Sekunden (konfigurierbar) ab. PHP bricht ferner ab, wenn eine bestimmte Menge Speicher (konfigurierbar) verbraten wurde.
Deshalb auch "Fertig". Wenn Du etwas eingibst lädst Du die Seite sicher neu, und das Script arbeitet wieder bis es gekillt wird. Also müsstet Du regelmässig einen Reload browserseitig starten.
Das ist alles Unsinn, weil es Performance ohne Ende frisst.