Diese Abfrage befasst sich mit der Herausforderung, eine Verbindung zu schließen, bevor ein PHP-Skript abgeschlossen wird. Das Ziel besteht darin, einen langwierigen Prozess über AJAX zu initiieren, aber eine Antwort zurückzugeben, die seinen Beginn angibt, ohne auf den Abschluss des PHP-Skripts zu warten.
Laut PHP-Handbuch erfordert das Beenden einer TCP-Verbindung ohne Beenden des PHP-Skripts mehr als Senden Sie einfach einen „Close“-Header. Benutzerhinweis Nr. 71172 (November 2006) bietet eine umfassende Lösung:
<?php ob_end_clean(); header("Connection: close"); ignore_user_abort(true); ob_start(); echo('Text the user will see'); $size = ob_get_length(); header("Content-Length: $size"); ob_end_flush(); flush(); // Do processing here sleep(30); echo('Text user will never see'); ?>
Damit die Lösung funktioniert, ist es wichtig, die Ausgabepufferung zu deaktivieren, den Puffer zu löschen und dann Header-Informationen zu senden. Das Senden eines „close“-Headers ist zwar notwendig, reicht aber nicht aus, um die Verbindung sofort zu schließen.
Die nachfolgenden Benutzernotizen #89177 (Februar 2009) und #93441 (September 2009) bieten zusätzliche Einblicke in die Verbindungsverarbeitung und Helfen Sie dabei, die Nuancen des frühen Verbindungsabbaus in PHP zu klären.
Das obige ist der detaillierte Inhalt vonWie kann ich eine PHP-Verbindung vorzeitig schließen, nachdem ich einen lang laufenden Prozess über AJAX gestartet habe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!