Wie schreibe ich ein PHP-Skript, das weiterläuft, selbst nachdem ich Text ausgeschwemmt und die HTTP-Anfrage beendet habe? Ist das möglich?
Sie könnten an der ignore_user_abort
Konfigurationsanweisung interessiert sein und / oder die Funktion ignore_user_abort
:
Legt fest, ob ein Client die Verbindung trennt sollte dazu führen, dass ein Skript abgebrochen wird.
Mit diesem können Sie:
flush
und / oder ob_flush
ignore_user_abort
(entweder jetzt oder vorher) auf
Der Browser des Benutzers wird wahrscheinlich immer noch "Warten" oder "Laden" anzeigen, aber der Inhalt der Seite wird geladen und angezeigt - und selbst wenn der Benutzer "Stopp" drückt, sollte das Skript seine Ausführung fortsetzen.
Für weitere Informationen gibt es ein Beispiel auf der Handbuchseite dieser Funktion - und Sie können einen Blick auf diesen Artikel werfen: Verwendung von ignore_user_abort()
zur Out-of-Band-Verarbeitung
Natürlich kann dies zwar für einige leichte Prozesse verwendet werden (wie zum Beispiel "Aufräumen" am Ende einer Seite, während es dem Benutzer so schnell wie möglich angezeigt wird) , aber Sie werden es immer noch tun begrenzt durch max_execution_time
und dergleichen.
Also, das ist keine Lösung, die für lange / schwere Berechnungen verwendet werden sollte.