Whorn: Download Status abfragen

Hi Folks!

Kennt jemand eine Möglichkeit, wie man unter PHP feststellen kann, ob ein Download gezogen (erfolgreich?) worden ist?

w

  1. Hallo Whorn,

    im Normalfall wird das nicht möglich sein, da Du immer einen Callback vom Client benötigst.

    Du kannst allerdings ein PHP-Script schreiben, welches die Datei sendet. Als download-URL gibst Du dann das PHP-Script an.

    Denk in diesem Falle daran, wenn möglich im Script die Header-Information Content-Length zu senden und den Content-Type ggf. zu ändern.

    Gruß,

    • Johannes
    1. leider habe ich dann genausowenig eine Erfolgsmeldung oder einen Error. Gib es denn nicht vielleicht Tricks, um sich dem Ergebnis anzunähern: zB. wenn mann feststellen könnte, ob det Download abgebrochen wurde (erhalte ich zB diese Information, wenn der User während des Downloads diesen abbricht?).

      gruß w

      1. Den Erfolgsstatus kannst Du abrufen, wenn Du entweder den erfolgreichen Download (alle Daten gesendet) in einer DB speicherst (vorsicht bei Transaktionen), oder ihn in einer Datei loggst usw. .

        Ansonsten könnte es wie folgt funktionieren:

        Mit ignore_user_abort() sorgst Du für die vollständige Ausführung des Scriptes. Fehler beim Download können und müssen nun im Script angefangen werden, was Du mit connection_status() realisierst.

        Also mit anderen Worten, sollte es VOM PRINZIP HER wie folgt aussehen:

        ignore_user_abort(TRUE);
        while (bytes_remaining()) {
         send_some_bytes();
         if (connection_status()!=NORMAL) {
          log_failure();
          exit();
         }
        }
        log_success();

        Ein anderer Ansatz wäre die Funktion register_shutdown_function(). Schau Dich da am besten mal in der PHP-Dokumentation unter "Verbindungssteuerung" nach.

        • Johannes
        1. Hi Jo!

          Hab mal in meinen E- und P-Books nach "Verbindungssteuerung" gesucht und einiges gefunden. also werde ich erstmal dort nachforschen und dann die ergebnisse hier kundtun.

          danke erstmal

          w

      2. Vielleicht funktioniert es ja so:
        <?php
        ini_set ("ignore_user_abort", "1"); // http://www.php.net/manual/de/function.ini-set.php

        /* Download */

        if ($HTTP_CONNECTION != 'Keep-Alive') { // http://www.php.net/manual/de/language.variables.predefined.php
         /* Download abgebrochen */
        }
        ?>

        Ich habe leider keine Zeit das mal selbst zu testen.

        PS: Eine Erfolgsmedung per eMail ist willkommen. ;)