"HTTP Stream" Problem.. denke mit Apache..

Bash, Shell, PHP, Python, Perl, CGI
stiba
Posts: 10
Joined: 2009-08-28 23:37

"HTTP Stream" Problem.. denke mit Apache..

Post by stiba » 2009-08-28 23:54

Hi leute..
mal seit langem wieder ein Thema das ich auch nach langer suche nicht direkt lösen konnte...

Bisher habe ich mit nem javascript Intervall am Server nach neuen Nachrichten geschaut und dementsprechend das frontend geupdated..
Nun habe ich mir aber mal genauer die Methode, die ua. meeboo.com verwendet angeschaut..

hab nen Serverseitiges Script das in ner schleife nach den neuen messages schaut (max 30 sek. lang) , und beim erfolg diese ausgibt und dann abbricht. Das JS verarbeitet die Messages dann auf der anderen Seite und ruft per ajax wieder selbiges script auf das wieder so lange in der loop bleibt bis neue nachrichten ankommen. usw.
während der ajax request aber läuft, nimmt apache allerding keine weiteren anfragen der selben IP mehr an bzw. beantwortet diese erst wenn der eigentliche request fertig ist.. was ja immer nur bei neuen messages bzw. nach 30 Sekunden passiert.


weiss wer welche Einstellungen in der httpd.conf für mich interessant sind?
Hab schon eines mit MaxClients usw. probiert aber bisher ohne Erfolg.

ich hoffe mir kann dabei wer weiterhelfen, will den unnötigen Overhead der bisherigen Version endlich los werden..

Vielen Dank im vorraus

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: "HTTP Stream" Problem.. denke mit Apache..

Post by Roger Wilco » 2009-08-31 00:32

Ich weiß nicht genau, ob ich deine Frage richtig verstanden habe, aber ich denke die Techniken Comet und Bayeux dürften für dich interessant sein.

stiba
Posts: 10
Joined: 2009-08-28 23:37

Re: "HTTP Stream" Problem.. denke mit Apache..

Post by stiba » 2009-08-31 00:57

Joha thx.. werde ich mich jetzt gleich mal genauer anschauen.. hatte gerade in der zwischenzeit mein problem aber auch noch mal präzisiert. Das stell ich jetzt trotzdem erst mal rein...


Hallo, da ich nicht weiss ob meine Beschreibungen ausgereicht haben hier noch mal mehr Details zu meinem Problem.

dazu hab ich im erstem Diagramm das Problem wie es sich derzeit darstellt und im 2. den Sollzustand skizziert.

Amerkungen:
-die gestrichelten Linien die vom rechten Rand in die Diagramm zeigen waren jeweils mit "sleep 1000ms" gekennzeichet, was jedoch abgeschitten wurde..
- In beiden Diagrammen wird als 1. asyncron async_check_for_new_messages() auf dem Server via JS/Ajax aufgerufen. check_in_db_for_new_new_messages() gibt dann jeweils im 3. Durchlauf/Versuch neu gefunden messages zurück.
-Währenddessen erfolgt aber vom Client ein weiterer Aufruf auf dem Server mit asyc_or_sync_getOtherData(), welcher im IST-Zustand erst beantwortet wird nachdem das getMessage Script seine Daten zurück gegeben hat(würde ebenfalls nach 30 Versuchen no zurück geben und der request dann vom front-end erneut aufgerufen).
Er soll aber wie man im 2. Diagramm sehen kann direkt beantwortet werden.


Während der async_check_for_new_messages() request also läuft, werden keinerlei weiterer Requests gleicher IP mehr beantwortet. Liegt übrigens auch defintiv nicht am Browser, da selbst ganz normale GET requests in einem 2. von 1. verschiedenen Browser währenddessen auch nicht beantwortet werden.

IST-Zustand
http://www.secchat.de/ist.png
SOLL-Zustand
http://www.secchat.de/soll.png

stiba
Posts: 10
Joined: 2009-08-28 23:37

Re: "HTTP Stream" Problem.. denke mit Apache..

Post by stiba » 2009-08-31 01:34

Roger Wilco wrote:Ich weiß nicht genau, ob ich deine Frage richtig verstanden habe, aber ich denke die Techniken Comet und Bayeux dürften für dich interessant sein.


Joha.. hab nun geschaut und festgestellt das ich AjaxLongPolling was ein teil von Comet mit dem oben beschrieben implementiert habe. Nur hilft mir das leider nicht dabei das Apache sich sturr stellt und den Request in der Queue hinten anstellt und sich der nebenläufigkeit an der Stelle versperrt...

stiba
Posts: 10
Joined: 2009-08-28 23:37

Re: "HTTP Stream" Problem.. denke mit Apache..

Post by stiba » 2009-08-31 17:55

noch mal die Firebugsicht bzg des Problems...

hier sieht man bis auf den letzten request wie es seien sollte..
also bevor ich den letzten request getChannels.php?folder_id=2 gestartet habe, hab ich einem weitern Fenster nebenbei den LongPoll gestartet.
Wie man sieht hängt der Request hier und wird nicht beantwortet.
http://www.secchat.de/2.png


Hier sieht man den eigentlichen LongPoll Request..
4 mal hat der Request nach 30 Sekunden abgebrochen da keine neuen Messages da waren..
im fünften Versuch wurde auf der Server Seite bereits nach 11 von 30 Sekunden eine neue Message regestriert. -> request bricht ab, Message wird ausgegen.. und der LongPoll neugestartet.
http://www.secchat.de/1.png

funktioniert ja auch soweit auch ganz gut.. wenn da nicht das problem mit den weiteren Requests wie im 1. Bild wäre... :|

stiba
Posts: 10
Joined: 2009-08-28 23:37

Re: "HTTP Stream" Problem.. denke mit Apache..

Post by stiba » 2009-08-31 18:23

joha joha joha...
DEADLOCK zwischen den paralell gestarteten SESSIONS...
Das LongPoll Script hat am anfang session_start() aufgerufen(und erst am ende wieder freigegeben)... und die paralellen request ebenfalls..
Lösung war.. die benötigten Session Infos im Long Poll Script in Vars. zwischen zu speichern und vor der WHILE Schleife ein session_write_close(); anzuwenden...

vieleicht hilft das ja in zukunft iwem bei ähnlichem Problem...

so far

dotme
Posts: 150
Joined: 2004-12-15 16:48

Re: "HTTP Stream" Problem.. denke mit Apache..

Post by dotme » 2009-08-31 23:30

Es ist zwar nicht Freitag aber nen Smilie muss jetzt sein :-D
Die Probleme, die man selber löst, sind eh immer die schönsten.