Kann ein PHP-Skript nach dem Beenden der HTTP-Anfrage weiterlaufen?

8

Wie schreibe ich ein PHP-Skript, das weiterläuft, selbst nachdem ich Text ausgeschwemmt und die HTTP-Anfrage beendet habe? Ist das möglich?

    
Robin Rodricks 15.09.2009, 16:50
quelle

2 Antworten

5

Um PHP-App für immer oder bis PHP zu beenden

%Vor%     
ToughPal 15.09.2009, 17:01
quelle
4

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:

  • erzeugt den Teil der Seite, der an den Browser gesendet werden soll
  • Spülen Sie die Ausgabe mit flush und / oder ob_flush
  • rufe ignore_user_abort (entweder jetzt oder vorher) auf
  • mach mehr Arbeit

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.

    
Pascal MARTIN 15.09.2009 16:59
quelle

Tags und Links