Ich bin verantwortlich für den Backend-Teil einer API, geschrieben in PHP, die hauptsächlich von einem Flash-Client verwendet wird. Was jetzt passiert ist: Der Flash-Client ruft an, das Backend lädt die notwendigen Daten, führt alle notwendigen Verarbeitungen und Nachbearbeitungen, Logging und Caching durch und gibt das Ergebnis an den Client zurück.PHP + gzip: Verbindung schließen und weiter ausführen
Was ich gerne geschehen würde, ist so schnell wie möglich die Daten an den Client zurück zu geben, die Verbindung zu schließen, und dann alle Sachen, die der Client nicht kümmern muss. Dadurch könnte die API viel schneller reagieren. Im Anschluss an hier die Vorschläge:
http://php.net/manual/en/features.connection-handling.php
tatsächlich funktioniert, außer, dass ich zu gzip-Codierung, um auszuschalten, damit es funktioniert, was nicht sehr praktisch ist. Wir verwenden mod_deflate in Apache, also wäre eine Lösung, die damit arbeitet, ideal, aber ich würde auch eine andere Methode in Erwägung ziehen, unseren Inhalt zu gzip, wenn das notwendig ist.
Es scheint wie es sollte eine Möglichkeit sein, Apache wissen zu lassen "Ich habe dir alle Daten gesendet, die ich senden werde", aber ich kann nicht scheinen, etwas ähnliches zu finden.
Für diejenigen, die fragen, ja, ich kann die Ergebnisse früh, aber der Flash-Client wird sie nicht verarbeiten, bis die Verbindung geschlossen ist.
Dank. Ich kenne einige Problemumgehungen für dieses Problem, einige eleganter als andere, aber ich würde gerne einen Weg finden, Apache einfach zu sagen, dass er nicht mehr auf die Ausgabe warten und die Verbindung schließen soll. :) –