2012-04-05 6 views
1

Update: Die Nutzung der Sitzungen ist das Problem, wenn die Seite Abfrage aufrufen, da es bereits offen eine Zeit ist.Lange Polling, stecken Apache, wenn der Schlaf() durch die Nutzung von Sitzungen

Ich mache eine lange Umfrage auf meiner Web-App.

Für jetzt bin ich etwas zu tun, wie: (das letzte Ziel ist es, eine Abfrage tun dann schlafen, dann eine Abfrage, dann schlafen, ...)

sleep(10); 
echo 'ok'; 

auf meinem Server-Seite (nur test it)

Das Problem: Wenn ich versuche, dann eine andere Seite zu laden dauert es immer 10 Sekunden.

+0

Wie viele Threads und Prozesse hat Apache gehen? Es besteht eine gute Chance, dass Sie alle Ressourcen von Apache nutzen und warten müssen, bis eine Anfrage fertig ist, um eine neue zu liefern. – Corbin

+1

Ja. 'sleep()' bindet den Apache-Arbeiter ein. Guter Weg, sich selbst zu verleugnen. – ceejayoz

+0

Ahah ok ... eine andere Möglichkeit, es ohne Schlaf zu tun, dann ist das Ziel, eine Datenbank ab und zu zu überprüfen, ob es neue Sachen gibt, aber zwischen meinen Abfragen sollte ich etwas wie schlafen, wenn nicht der Server wird ... explodieren;) –

Antwort

2

Verwenden Sie session_write_close(), um die Sitzung im schlafenden Skript aufzugeben. Die $ _SESSION-Daten sind weiterhin zum Lesen verfügbar. von Marc B