Felix: readfile() vs. <img>

Hallo Forum,

hier mal eine Verständnisfrage:

Ich habe in einem Projekt Bilder, die nur in einem passwortgeschützten Bereich einsehbar sind.

Die Frage ist nun, ob das Öffnen und Ausgeben einer Bilddatei per readfile() langsamer ist, als das direkte Ausgeben der Bild-URL im img-Tag. Meiner Ansicht nach nicht, da ja auch der Browser beim "normalen" Bilderanzeigen die Datei öffnet, den Inhalt ausliest und anzeigt.

So könnte ich nämlich die Bilder in einem Verzeichnis oberhalb des public-Roots speichern, wo niemand direkt drankommt, und sie bei der Ausgabe einfach per readfile() referenzieren.

Was sagt ihr dazu?

  1. Hi,

    Die Frage ist nun, ob das Öffnen und Ausgeben einer Bilddatei per readfile() langsamer ist, als das direkte Ausgeben der Bild-URL im img-Tag.

    ja. Allerdings vermutlich unmessbar.

    Meiner Ansicht nach nicht, da ja auch der Browser beim "normalen" Bilderanzeigen die Datei öffnet, den Inhalt ausliest und anzeigt.

    Nein. Der Browser öffnet keine Dateien, sondern fordert eine Ressource an. Der _Server_ schickt dann (möglicherweise!) im Response den Inhalt einer Datei mit. In der Regel startet er dafür keinen PHP-Interpreter.

    So könnte ich nämlich die Bilder in einem Verzeichnis oberhalb des public-Roots speichern, wo niemand direkt drankommt, und sie bei der Ausgabe einfach per readfile() referenzieren.

    Und inwiefern ist das Anfordern einer Ressource, die der Server mit PHP assoziiert, weniger direkt als das Anfordern einer Ressource, die der Server mit einer statischen Datei assoziiert? URL ist URL.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hello,

      Die Frage ist nun, ob das Öffnen und Ausgeben einer Bilddatei per readfile() langsamer ist, als das direkte Ausgeben der Bild-URL im img-Tag.

      ja. Allerdings vermutlich unmessbar.

      Da würde ich mich aber nicht gerne mit unseren Aufwands-Analyse-Spezialisten (ASS) anlegen.
      Die Nutzung einer im Webserver fest eincompilierten Funktion zur Auslieferung einer Ressource ist bestimmt _wesentlich_ schneller, als die Instanzbildung durch eine im Webserver eincompiliertes Modul, das Öffnen einer weiteren Datei (PHP-Code), das Parsen dieser Datei, ggf. das Laden weiterer Dateien (includes) zum Zwecke des Parsens, das Laden der Ressource, das Bilden des Ausgabestreams und das Absetzen des Ausgabestreams an den eigentlichen HTTP-Server unter Kontrolle des Runtimes des Modules.

      Harzliche Grüße vom Berg
      esst mehr http://www.harte-harzer.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. Ahoi Tom,

        ja. Allerdings vermutlich unmessbar.
        Da würde ich mich aber nicht gerne mit unseren Aufwands-Analyse-Spezialisten (ASS) anlegen.

        einen wesentlichen nachteil haben aufjedenfall die benutzer welche
        einen Textbrwoser benutzen, dieser fordert die im <img>-Tag abgelegten
        Bilder AFAIK nicht an, wenn sie aber vom Server immer eingelesen
        werden und der damit irgendetwas arbeitet dann schluckt das
        unnötigerweise Zeit

        MfG

        --
        Alle Angaben wie immer ohne Gewähr
        LEISE IST SCHEISSE!
        1. Hi Daniel,

          einen wesentlichen nachteil haben aufjedenfall die benutzer welche
          einen Textbrwoser benutzen, dieser fordert die im <img>-Tag abgelegten
          Bilder AFAIK nicht an, ...

          hier bist du einem Denkfehler aufgesessen. Auch wenn Bilder serverseitig über ein Script mit readfile() übergeben werden, so ist doch das Script immer noch mit einem <img> im Dokument referenziert. Ein Textbrowser fordert die Ressource wahrscheinlich tatsächlich nicht an (das wäre jedenfalls vernünftig), aber das gilt dann auch für eine PHP-generierte Bildressource.

          So long,

          Martin

          1. Hello,

            hier bist du einem Denkfehler aufgesessen. Auch wenn Bilder serverseitig über ein Script mit readfile() übergeben werden, so ist doch das Script immer noch mit einem <img> im Dokument referenziert. Ein Textbrowser fordert die Ressource wahrscheinlich tatsächlich nicht an (das wäre jedenfalls vernünftig), aber das gilt dann auch für eine PHP-generierte Bildressource.

            genau!

            Harzliche Grüße vom Berg
            esst mehr http://www.harte-harzer.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
    2. 你好 Cheatah,

      Die Frage ist nun, ob das Öffnen und Ausgeben einer Bilddatei per
      readfile() langsamer ist, als das direkte Ausgeben der Bild-URL im
      img-Tag.

      ja. Allerdings vermutlich unmessbar.

      Der Unterschied ist durchaus messbar und gar nicht mal so klein.

      再见,
       克里斯蒂安

      --
      Microsoft: Where do you want to go today?
      Linux: Where do you want to go tomorrow?
      FreeBSD: Are you guys coming, or what?
      http://wwwtech.de/