Ausführen von PHP-Vorgängen nach dem Senden einer HTTP-Antwort
In PHP 5.2 kann das Senden einer HTTP-Antwort bei Ausführung als mod_php eine lang laufende Datenbank unterbrechen Anfragen und E-Mail-Bearbeitung. Um dieses Problem zu beheben, kann man eine Technik verwenden, die es PHP ermöglicht, eine vollständige HTTP-Antwort an den Client zu senden und dann die Ausführung von Vorgängen für eine zusätzliche Dauer fortzusetzen.
Das folgende Snippet erreicht dies:
ob_end_clean(); header("Connection: close"); ignore_user_abort(); // optional ob_start(); echo ('Text the user will see'); $size = ob_get_length(); header("Content-Length: $size"); ob_end_flush(); // Strange behaviour, will not work flush(); // Unless both are called ! session_write_close(); // Added a line suggested in the comment // Do processing here sleep(30); echo('Text user will never see');
Bei der Ausführung sendet das Skript sofort eine vollständige HTTP-Antwort an den Client. Anschließend beginnt es im Hintergrund mit der Verarbeitung der Datenbankanfragen und E-Mails, was bis zu einer Minute dauern kann. Beachten Sie, dass die Benutzerinteraktion unterbrochen wird, sobald die Antwort gesendet wird.
Das obige ist der detaillierte Inhalt vonWie führe ich PHP-Vorgänge aus, nachdem ich eine HTTP-Antwort gesendet habe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!