Norbert: readfile(); - Problem ...

Hallo,

in einem Download-Script wird dem User das Gewuenschte mit der Funktion readfile(); serviert. Das klappt auch prima. Nur mit dem Logfile habe ich Probleme. readfile(); gibt die Groesse der Datei in Byte zurueck. Komischerweise auch dann, wenn der User den Download abbricht, z.B. in dem er das Speichern auf der Festplatte ablehnt. Mit einem Tool, welches den Traffik anzeigt, habe ich nun festgestellt, dass es voellig egal ist, wie man sich bei speichern Ja/Nein entscheidet. Der Download ist schon laengst "zu Hause". Nur bei sehr grossen Dateien, bei denen der Download laenger dauert, wird dieser abgebrochen, wenn man das Speichern verweigert. Das soll so okay sein ...

Gruss und Dank
Norbert

  1. Hallo Norbert,

    ... Das soll so okay sein ...

    wo ist jetzt Dein Problem?

    Gruß aus Berlin!
    eddi

    1. Hallo eddi,

      wo ist jetzt Dein Problem?

      hmm,
      eigentlich sind es zwei:

      Das erste Problem besteht darin, dass man wegen diesem Verhalten auf der Serverseite nicht mitbekommt ob es zum Download auch wirklich gekommen ist, oder ob sich der User doch noch anders entschieden hat. Damit ist jede Download-Statistik a-priori falsch, echt doof.

      Das zweite Problem besteht darin, dass eventuell eine Datei, die man gar nicht haben will, gegen den eigenen Willen auf dem PC landet. Darin sehe ich ein grosses Sicherheitsproblem.

      Das ganze ist IMHO nicht wirklich optimal geloest.

      Gruss und Dank
      Norbert

      1. Re:

        Das erste Problem besteht darin, dass man wegen diesem Verhalten auf der Serverseite nicht mitbekommt ob es zum Download auch wirklich gekommen ist, oder ob sich der User doch noch anders entschieden hat. Damit ist jede Download-Statistik a-priori falsch, echt doof.

        Martin hat hierfür schon einen Grund genannt, ein weiterer sind die Schreibpuffer der Verbindungen, Proxies und, und, und...
        Du hast also recht - es ist keine korrekte Statistik und der Zustand meinetwegen auch beklagenswert. Es ist aber nicht zu ändern - Punkt .<- da ist er

        Das zweite Problem besteht darin, dass eventuell eine Datei, die man gar nicht haben will, gegen den eigenen Willen auf dem PC landet.

        Das ist nicht Dein Problem (entschuldige, daß ich auch das jetzt so einfach abtue), sondern das der Browserentwickler, hier für Sicherheit zu sorgen.

        Gruß aus Berlin!
        eddi

        1. Hallo eddi,

          Das ist nicht Dein Problem, ... sondern das der Browserentwickler, hier für Sicherheit zu sorgen.

          lol,
          dann macht man aber den Bock zum Gaertner.

          M$ und auch die anderen Hersteller betrachten einen Rechner als Freiraum fuer Ihre Experimente.
          Zumindestens wurden bislang alle Klagen wegen Hausfriedensbruch entweder gar nicht erst zugelassen oder abschlaegig beschieden.

          Man muss sich das so vorstellen, dass Dein Kuechenstudio sich einen seperaten Zugang zu Deiner Kueche/Wohnung beim liefern der Kueche einrichtet, und nun regelmaessig reinschaut, unter dem Vorwand Deine elektrischen Geraete(Herd, Spueler, Waschmaschine, Therme) zu warten und das Gericht Dir einen Vogel zeigt, wenn Du das unterbinden willst.

          Ich bin kein Verschwoerungstheoretiker, deswegen ueberlasse ich es Dir, sich vorzustellen, was man mit dieser Praxis noch alles so anstellen koennte.

          Gruss Norbert

          1. Moin!

            Das ist nicht Dein Problem, ... sondern das der Browserentwickler, hier für Sicherheit zu sorgen.
            lol,
            dann macht man aber den Bock zum Gaertner.

            M$ und auch die anderen Hersteller betrachten einen Rechner als Freiraum fuer Ihre Experimente.

            Dann nutze Open Source Software, von der derartige Verdachtsmomente bislang noch nicht geäußert wurden und bei der zumindest in der Theorie die Möglichkeit besteht, das auch zu beweisen.

            Man muss sich das so vorstellen, dass Dein Kuechenstudio sich einen seperaten Zugang zu Deiner Kueche/Wohnung beim liefern der Kueche einrichtet, und nun regelmaessig reinschaut, unter dem Vorwand Deine elektrischen Geraete(Herd, Spueler, Waschmaschine, Therme) zu warten und das Gericht Dir einen Vogel zeigt, wenn Du das unterbinden willst.

            Die Lösung ist ja ganz einfach: Kaufe nicht bei diesem Küchenstudio, sondern bei einem anderen.

            Abgesehen davon verstehe ich nicht, was das mit dem Abbruch von Downloads zu tun hat. Eine Analogie ist es jedenfalls nicht.

            - Sven Rautenberg

            --
            My sssignature, my preciousssss!
      2. Hello,

        Das zweite Problem besteht darin, dass eventuell eine Datei, die man gar nicht haben will, gegen den eigenen Willen auf dem PC landet. Darin sehe ich ein grosses Sicherheitsproblem.

        Das ist nicht die ganze Wahrheit.
        Der Server bietet Dir die Ressource ja nicht an, ohne von Dir dazu aufgefordert worden zu sein. Dass Dein Browser die Ressource nun aber nicht grafisch darstellt, sondern Dich wiederum fragt, ob Du sie vielleicht lieber speichern möchtest, das ist doch nett von Deinem Browser.

        Wenn Du aber meinst, dass es bei Downloads besser wäre, erst noch auf einen "ja, ich will"-Knopf drücken zu müssen, dann ist das nur eine konzeptionelle Frage. Du könntest den Download durch einen "Post-Button" auslösen lassen.

        Das hat dann aber zur Konsequenz, dass der Inhalt der Ressource nicht in (normalen) Suchmaschinen indiziert werden wird.

        Und dieses Script könnte dann  mittels der Funktion
        http://de2.php.net/manual/en/function.ignore-user-abort.php
        und
        [http://de2.php.net/manual/en/function.connection-aborted.php]
        auch feststellen, ob der Download abgebrochen wurde.

        Harzliche Grüße vom Berg
        http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

        1. Hallo Tom,

          urspruenglich ging es mir nur darum, die Download-Statistik etwas realistischer zu gestalten.
          Die "restlichen" Problemchen sind Folgeschaeden, deshalb bin ich dafuer nicht haftbar ... ;-)

          Die Funktionen ignore_user_abort(); und connection_aborted(); reagieren _nicht_ auf den
          Abbruch-Button im Download-Dialog des Browsers. Nach Deinen Ausfuehrungen erscheint mir
          das auch logisch, weil der eigentliche Transfer ja schon abgeschlossen ist und die Datei
          im Browser-Cache liegt.

          Gruss und Dank
          Norbert

        2. hi,

          Und dieses Script könnte dann  mittels der Funktion
          http://de2.php.net/manual/en/function.ignore-user-abort.php
          und
          [http://de2.php.net/manual/en/function.connection-aborted.php]
          auch feststellen, ob der Download abgebrochen wurde.

          Das ist ja nicht sein Problem.

          Eine recht kleine Datei hat mein Browser schon heruntergeladen, noch bevor ich überhaupt die Entscheidung getroffen habe, ob ich sie speichere, oder doch noch auf Abbrechen klicke, so dass die temporäre Datei einfach wieder geputzt wird.

          Einen User Abort wirst du in dem Falle wohl nicht feststellen können, die Übertragung ist ja bereits fertig.

          Diesen Fall zu erfassen, das kann m.E. keine serverseitige Statistik leisten.
          Halte ich aber auch für unnötig.
          Selbst wenn ich den Download erst mal korrekt abspeichere, kann ich mich doch direkt danach entscheiden, die Datei wieder aus dem Zielverzeichnis zu löschen, ohne sie benutzt/ausgeführt/angesehen zu haben.
          Ich habe also runtergeladen, und trotzdem bin ich kein zu zählender "Benutzer" der Datei - und nu?

          Man muss sich einfach damit abfinden, dass sich bestimmte Dinge und Aktivitäten so weit im "privaten" abspielen, dass man sie nicht statistisch erfassen kann - nicht nur im www, sondern auch im echten Leben.
          Es handelt sich also bei diesem Donwloadzähler lediglich um eine weitere Meßgröße, deren Genauigkeit nicht exakt zu definieren ist - und vermutlich auch niemanden sonderlich interessiert.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hallo Norbert,

    [...] dass es voellig egal ist, wie man sich bei speichern Ja/Nein entscheidet. Der Download ist schon laengst "zu Hause". Nur bei sehr grossen Dateien, bei denen der Download laenger dauert, wird dieser abgebrochen, wenn man das Speichern verweigert.

    ja, das liegt daran, dass alle mir bekannten Browser hier "optimieren". Während der Browser noch darauf wartet, dass der Benutzer ihm sagt, wo er die Datei haben möchte, lädt er im Hintergrund nämlich schon fleißig. Bei kleinen Downloads kann es daher sein, dass die Daten schon komplett übertragen sind, bis der Anwender auf "OK" klickt.

    Das sieht man im IE übrigens besonders schön: Bei längeren Downloads wird am Anfang meist eine unrealistisch hohe Übertragungsrate angezeigt. Das liegt daran, dass der IE die Zeit erst ab dem "OK"-Klick nimmt, aber die gesamte, schon im Hintergrund übertragene Datenmenge in die Rechnung einbezieht. Bei längeren Downloads (mehrere 100kB oder einige MB) nähert sich die angezeigte Download-Rate dann allmählich dem tatsächlichen Wert.

    Das soll so okay sein ...

    Finde ich schon. :-)

    Schönen Abend noch,
     Martin

    --
    Alleine sind wir stark...
    gemeinsam sind wir unausstehlich!
    1. Hello,

      Das soll so okay sein ...

      Finde ich schon. :-)

      Das liegt einfach an der Regel:

      Ein Request ==> eine Antwort

      Anderenfalls müsste für den Download ein weiterer Statuscode eingeführt werden, wie z.B. für Basic-Auth. Da gilt die Regel ja nicht so eindeutig. Dort müsste sie der Ornung halber lauten:

      ein Request ==> eine Gegenfrage

      Harzliche Grüße vom Berg
      http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau