4 Stimmen

Verzichten Sie auf lange Prozesse in PHP (aber lassen Sie sie abschließen)

Ich habe ein HTML-Formular, das an eine PHP-Seite weitergeleitet wird, die ein Skript initiiert. Die Ausführung des Skripts kann zwischen 3 und 30 Sekunden dauern - der Benutzer muss nicht anwesend sein, um das Skript zu beenden.

Ist es möglich, ein PHP-Skript zu starten, sofort ein "Danke" an den Benutzer (oder was auch immer) zu drucken und ihn seinen Weg gehen zu lassen, während Ihr Skript weiterarbeitet?

In meinem speziellen Fall sende ich Formulardaten an ein PHP-Skript, das die Daten dann an zahlreiche andere Stellen weiterleitet. Das Warten auf die erfolgreiche Übermittlung aller Daten ist im Moment nicht in meinem Interesse. Ich möchte einfach nur das Skript laufen lassen, damit der Benutzer gehen und tun kann, was er will, und das war's.

0voto

Sampson Punkte 258265

Das Ergebnis war das folgende.

<?php

  // Ignore User-Requests to Abort
  ignore_user_abort(true);
  // Maximum Execution Time In Seconds
  set_time_limit(30);

  header("Content-Length: 0");
  flush();

  /*

    Loooooooong process

  */

?>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X