skript nach Readfile fortsetzen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • skript nach Readfile fortsetzen

    Hallo,

    ich möchte gerne nach dem Beenden eines Downloads, ein Feld in meiner MySQL-DB auf True setzen.
    Das sieht derzeit so aus:
    PHP-Code:
    header ("HTTP/1.1 200 OK");
    header("Content-type: application/force-download");
    header("Content-Disposition: attachment; filename=\"$filename\"");
    readfile("$url");
    $query "update ...";
    $res mysql_query($query$link); 
    Habe soeben gemerkt, dass readfile() für gewöhnlich schneller als der Download zum User beendet ist, und somit der MySQL-Query zu früh ausgeführt wird.
    Habe leider keine Ahnung, wie man bewirkt, dass der nächste Befehl erst ausgeführt wird, wenn der Download tatsächlich beendet ist.
    Hat jemand ne Idee?
    Danke!

  • #2
    verwirrung^

    Habe jetzt mal einen längeren download (25 MB) durchlaufen lassen, und bin mir nicht mehr sicher, wie readfile() wirklich aufm Server abläuft.

    Ich sehe 2 Möglichkeiten:
    1> der PHP-Prozess lädt die Datei schnellstmöglichst auf den Server und schickt diese an den User. Somit kann Readfile noch vor dem Client-Download beendet sein.

    2> der PHP-Prozess lädt die Daten simultan zum Client-Download und schickt diese sofort weiter. Somit endet Readfile fast gleichzeitig mit dem Client-Download.

    Kann jemand Licht ins Dunkle bringen? Danke!

    Kommentar


    • #3
      kannste knicken sag ich mal einfach so

      so wie du das machst, erscheint beim benutzer ja ein mehr oder weniger formschönes dialogfenster, in dem er gefragt, wo er die datei den zu speichern geneigt ist.
      wenn er da auf "abbrechen" klickt, wird die datei gar nicht erst runtergeladen, aber readfile is trotzdem gelaufen
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        Hi,
        Hm ich weis net ob ich das Problem nicht falsch verstanden hab aber eigentlich könnte man alles was danach ausgeführt wird in eine funktion schreiben und dann mit register_shutdown_function aufrufen.

        http://www.php.net/register_shutdown_function

        Die Funktion wird ja dann aufgerufen wenn die verbindung zum User nichtmehr hergestellt ist.

        In der Funktion kannst du dann noch nachschauen ob der User die Connection Aborted hat (was meines wissens der Fall ist wenn er Abbrechen drückt !?) oder nicht.

        http://www.php.net/connection_status
        http://de2.php.net/manual/de/feature...n-handling.php

        Naja oder ich hab das Problem voll verpeilt ))
        Zuletzt geändert von Atrox; 11.11.2003, 09:04.

        Kommentar


        • #5
          Ich geh grad so meine Forenbeiträge durch und wollte dir nur noch für die super Antwort danken, Atrox.

          Kommt zwar n bissl spät, aber besser als nie

          Kommentar

          Lädt...
          X