"image2string"

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

  • #16
    Hallo,

    klink mich hier mal ein, obwohl ich grad nicht wirklich aktiv was dazu beisteuern kann, mich interessiert es einfach.

    Nur mal ein Gedanke noch dazu:
    Die Ausführungszeit mag via DB gleich oder vielleicht sogar schneller sein - nur - wie sieht's mit der Auslastung von Prozessor und RAM aus? Ohne mir das ganze genau überlegt zu haben, würd ich doch tippen dass die DB-Lösung hier mehr Resourcen verbraucht.

    Gruss
    Quetschi
    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
    Schön - etwas Geschichte kann ja nicht schaden.
    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

    Kommentar


    • #17
      Ich will Dir ja nicht auf die Füße treten, aber mein Mentor würde jetzt sagen: "Der werte Herr Mattes stellt eine Theorie auf. Nein Theorie kann man das nicht nennen...."

      Wieso sollte das mehr Resourcen kosten?

      Wenn Du eine Begründung bringst kann ich das mal kontrollieren, aber das kostet mich auch wertvolle Arbeitszeit.
      Wenn die Tatsachen nicht mit der Theorie übereinstimmen –

      um so schlimmer für die Tatsachen.

      Kommentar


      • #18
        *Sicherheitsschuhe-anzieh*
        nene, der Herr Mattes wollte keinen Theorie aufstellen

        Hab da nur einen Gedanken kurz verfolgt, der da grad in meinem Kopf auftauchte. Der Gedanke:
        Das Bild wird ja in den RAM-Speicher des Servers geladen, da es ja in eine Var/Array oder was auch immer gebracht werden muss. Ohne genauer nachzudenken glaubte ich, dass das bei der Link-zur-Datei-Methode nicht der Fall wäre, was sich bei näherer Betrachtung natürlich eh als Unsinn entpuppt hat - oder schickt der Apache vielleicht doch das Bild direkt von der Festplatte an die Netzwerkkarte?

        Gruss
        Quetschi
        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
        Schön - etwas Geschichte kann ja nicht schaden.
        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

        Kommentar


        • #19
          hab kein ab, weil ich lokal iis nutze.

          meine tabelle (3400 einträge, ca. 37 mb)
          Code:
          CREATE TABLE `test` (
            `id` int(10) unsigned NOT NULL auto_increment,
            `filename` varchar(255) default NULL,     /* hier dateiname */
            `binfile` blob,                                            /* hier binäre daten*/
            `txtfile` mediumtext,                                 /* hier binäre daten in base64 */
            PRIMARY KEY  (`id`)                                 /* damit's schneller geht */
          ) TYPE=MyISAM;
          wenn man davon ausgeht, dass die übermittlungsdauer vom server an den client egal ist (da sie ja immer von der anschlußgeschwindigkeit des users abhängt, etc.), interessiert mich nur die zeit, in der mein script abgearbeitet wird, sprich, die daten aus der db holt und sie übermittlungsbereit präsentiert.

          d.h.

          #1
          PHP-Code:
              $query "SELECT `filename` AS `ausgabe` FROM `test` WHERE `id` = 1";
              
          $result mysql_query($query);    
              
          $row mysql_fetch_assoc($result);    

              echo 
          "<img src='".($row['ausgabe'])."' />"
          #2
          PHP-Code:
              $query "SELECT `binfile` AS `ausgabe` FROM `test` WHERE `id` = 1";
              
          $result mysql_query($query);    
              
          $row mysql_fetch_assoc($result);    

              
          header('Content-Type: image/gif');
              echo 
          $row['ausgabe']; 
          #3
          PHP-Code:
              $query "SELECT `txtfile` AS `ausgabe` FROM `test` WHERE `id` = 1";
              
          $result mysql_query($query);    
              
          $row mysql_fetch_assoc($result);    

              
          header('Content-Type: image/gif');
              echo 
          base64_decode($row['ausgabe']); 
          damit ein wiederholtes testen möglich ist (1000 aufrufe), nutze ich output buffering, weil mich die ausgabe nicht interessiert.

          in jedem der 3 fälle sind die daten ausgabebereit - apache muss nur noch die daten an den user übermitteln. die letzteren 2 methoden brauchen definitiv mehr speicher, weil $row['ausgabe'] jeweils 4,5 kb groß ist, während im ersten fall nur 7 byte benötigt werden.

          ergebnis:
          Code:
          filename: 1.6016 ms
          binfile: 2.3162 ms
          txtfile: 2.8832 ms
          ------------------------------------

          Bei deiner Möglichkeit muss Apache die Datei erst wieder öffnen und ausgeben. Bei meiner Möglichkeit ist das schon passiert.
          ausgeben muss der server die daten bei jeder methode. das öffnen ist tatsächlich ein unterschied - da werd ich gleich mal noch eine runde testen. aber ich hab ja noch 0,7 ms in reserve

          Kommentar

          Lädt...
          X