dr.White: PHP Script soll auf Abbruch des Benutzers reagieren

Hallo zusammen,

ich hänge mal wieder fest.
Hab hier Script welches mit exec($command, $output_array, $status);
einen Befehl auf meinem debian linux ausführt.

Je nach Parametern kann die Abarbeitung diese Befehls lange dauern. Wenn also ein Benutzer in der Zwischenzeit im Browser auf "abbrechen" klickt will ich, dass mein php script den Prozess (kill) wieder beendet so dass dieser nicht unnütz im Hintergrund weiterläuft.

Mein einziges Problem ist nur, dass mein php script ja gar nichts mitbekommt davon wenn der Benutzer auf "abbrechen" klickt...

bei register_shutdown_function() steht aber, dass das php script etwas an den browser ausgeben muss um überhaupt mitzubekommen, dass die Verbindung weg ist...

Wie soll das gehen wenn mein script ja noch auf die Antwort vom Prozess wartet ? Wenn der Browser was vom Server bekommt ist PHP doch schon komplett fertig oder?

Ich blick nicht durch...

Hoffe ihr könnt etwas Licht ins Dunkel bringen.

Schönen Tag noch
doc

  1. ist das so unglaublich dumm von mir oder hat nur niemand ne Idee... ??

    Was ich nicht verstehe ist dieser Satz:
    "(...)Wenn dann der Benutzer den STOP-Button seines Browsers drückt, wird PHP bei der nächsten Ausgabe des Skriptes feststellen, dass die Verbindung abgebrochen wurde und die Shutdown-Funktion aufrufen.(...)"

    http://www.php.net/manual/de/features.connection-handling.php

    Wie soll ich denn eine Ausgabe machen wenn mein Script noch am rödeln ist...

    mfg doc

    1. echo $begrüßung;

      Wie soll ich denn eine Ausgabe machen wenn mein Script noch am rödeln ist...

      Du könntest zwischendurch immer mal was etwas "nicht sichtbares" versenden, z.B. Leerzeichen. (Die kannst du ja zur Not auch noch in ein nicht angezeigtes (display=none) Element packen.) Anschließend bittest du noch den Server mit flush() die Leerzeichen einzeln (inklusive Protokolloverhead versteht sich) zu versenden und nicht zu warten bis Paketgröße erreicht wurde.

      echo "$verabschiedung $name";

      1. Anschließend bittest du noch den Server mit flush() die Leerzeichen einzeln (inklusive Protokolloverhead versteht sich) zu versenden und nicht zu warten bis Paketgröße erreicht wurde.

        echo "$verabschiedung $name";

        D A N K E

        das Zauberwort heisst in diesem Falle also flush... wenn man erstmal weiss wonach man googeln soll ist es ganz einfach :)

        Hab die Aufgabe noch nicht gelöst... aber dank deiner Hilfe geht es endlich wieder vorran...

        puuuh und ein anderes Problem hab ich damit jetzt auch schon gelöst.

        viele Grüße und tausend Dank
        doc