Langes Polling mit PHP auf Apache

8

Hoffentlich kann ich das gut genug erklären. Ich arbeite an der Erstellung einer PHP-Bibliothek, um ajax-Anfragen durch PHP objektorientiert zu bearbeiten. Ich überlege mir gerade einen guten Weg, eine lange Umfragelösung zu implementieren, bin aber neugierig auf etwas.

Apache kümmert sich nicht darum, mehrere Verbindungen offen zu halten. Das Three-per-Request-Modell macht Apache für lange Abfragen sehr ineffizient. Die Verwendung von Servern wie nginx und lighttpd behandelt diese Threads viel besser, so dass ich in der Bibliothek verschiedene Funktionen implementieren möchte, die für die spezifischen Server optimiert sind, die über einen einzigen Funktionsaufruf verfügbar sind. Im Fall von Apache, der für PHP-Anwendungen einen enormen Marktanteil hat, brauche ich eine bessere Lösung.

Gibt es eine Möglichkeit, eine eingehende Anfrage in die Warteschleife / Pause zu stellen und mit der Bearbeitung anderer Anfragen fortzufahren, bis ich sie reaktivieren kann?

Ich bin mir nicht sicher, ob das Sinn macht oder ob ich überhaupt auf dem richtigen Weg bin. Was ist eine mögliche Lösung, die SO für lange Abfragen in PHP auf einem Apache-Server empfiehlt?

    
Jeremy Harris 16.03.2012, 02:02
quelle

2 Antworten

1

Das klingt nach Fortsetzungen. Sie können dies in PHP auf keine elegante Weise tun. Wenn Sie dies tun möchten, besteht die beste Möglichkeit darin, den aktuellen Status zu speichern und den Code so zu schreiben, dass Sie an der Stelle weitermachen können, an der Sie beim Laden des Status aufgehört haben.

    
rid 17.03.2012, 00:01
quelle
0

Ich glaube nicht, dass es eine Lösung gibt. Sie können eine Abrufanforderung nicht von einer normalen Anfrage unterscheiden. Vermeiden Sie nur Apache, der helfen könnte (z. B. das Ausführen von nginx auf 80, das Weiterleiten aller Anfragen an Apache auf 81, außer Abrufaufträgen).

Ich glaube auch nicht, dass Sie ein Problem haben. Nginx oder ein anderer Server ist nicht viel effizienter als Apache. Polling ist eine PHP-Anfrage, Apache mit mod_php ist mehr oder weniger eine gute Wahl. Nginx wird weniger Ressourcen als Apache verwenden, um PHP zu bedienen.

    
jcisio 16.03.2012 23:55
quelle

Tags und Links