wie kann ich über ein aufgerufenes GIF Parameter an eine PHP Datei übergeben?

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

  • #31
    Zitat von piratos Beitrag anzeigen
    Bleiben wir mal bei dem vorhandenen:

    Direktausgabe (bekannt)
    PHP-Code:
     <?php
    $img 
    imagecreatefromjpeg($imgname);
    header('Content-Type: image/jpg');
    imagejpeg($img);
    ?>
    Was'n Unfug. Wieso lässt du die Bilddaten über die GD-Lib-Funktionen laufen? Das verbrät nur unnötig Speicher und Rechenzeit, und falls die Abmessungen zu groß sind, um per GD-Lib in den Hauptspeicher geladen zu werden, bekommst du noch die "Out-of-Memory"-Meldung inklusive Scriptabbruch. Schau dir mal readfile() an. Das leidet unter keiner dieser Limitierungen.

    Beim Einsatz von Templateengine weist man die Inhalte zu und gibt Sie dann an der gewünschten Stelle aus.
    PHP-Code:
    $img imagecreatefromjpeg($imgname);
    imagejpeg($img);
    $out ob_get_contents();
    ob_end_clean();
    $tpl->assign('bild1',$sout); 
    Im Inhalt sprich Template setzte man dann z.B.
    PHP-Code:

     header
    ('Content-Type: image/jpg');
    echo 
    $tpl->VARS['bild1']; 
    Schau mal, das geht auch in 3 Zeilen und ganz ohne unnötiges Output-Buffering:
    PHP-Code:
    $tpl->assign('bild1'file_get_contents($imgname));
    header('Content-Type: image/jpg');
    echo 
    $pl->VARS['bild1']; 
    Ich würde aber die Variante mit readfile() vorziehen, weil die nicht den Umweg über eine PHP-String-Variable geht und somit auch nicht vom Memory-Limit abhängig ist.

    Damit ist der Code von der Ausgabe getrennt.

    Was auch immer man im Code anstellt ist für die Ausgabe und deren Gestaltung unineteressant.

    Das war das simple Prinzip einer Templateengine.
    Das glaubst du.

    Google doch einmal nach "presentation logic" und "business logic" und vergiss "Code" und "Gestaltung" lieber wieder.
    Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

    Kommentar


    • #32
      Also ich muss mich schon sehr wundern.

      Das ist ein Minibeispiel um das zu verdeutlichen und nichts konkretes im Einsatz.

      Und was Templateengine betrifft musst du mir rein nichts erzählen, nicht nur das ich Jahre an Erfahrungen mit diversen habe sondern zudem auch noch eine eigene.

      Und wie man so etwas perfomant gestaltet das muss mir auch keiner erzählen das ist im brutalen Altagseinsatz und das nicht bei Pippifax - Websites.

      Und das eine Templateengine höchst performant eingesetzt werden kann, das wissen alle meine User.

      Kommentar


      • #33
        Es geht hier ja nicht um das Für und Wider von Templateengines generell, sondern um die Tatsache, dass der Einsatz einer solchen für das Ausliefern eines Bildes einfach überflüssig ist, sondern sogar zu umständlich wäre. Separation von Präsentation und Business ist die eine Sache, aber bei der Auslieferung einfachster Ressourcen kann wohl kaum von Business gesprochen werden. Nebenbei führt der Einsatz einer Templateengine nicht direkt zu der Trennung zuvor genannter.

        Kommentar


        • #34
          Verstehe ich immer noch nicht. Das Template besteht also aus nichts als aus einem Header und den Bilddaten?

          Ich würde im Leben ja nicht auf die Idee kommen, im View (respektive Template) nochmal einen Header zu schicken?!
          [FONT="Helvetica"]twitter.com/unset[/FONT]

          Shitstorm Podcast – Wöchentliches Auskotzen

          Kommentar


          • #35
            Zitat von piratos Beitrag anzeigen
            ... musst du mir rein nichts erzählen ... Jahre an Erfahrungen ... eine eigene ... im brutalen Altagseinsatz ... nicht bei Pippifax - Websites
            Ich habe mir dein Zeug* mal angesehen. Die Applikation sind 500 Zeilen Spaghetticode. Die Template Engine besteht im Wesentlichen aus zwei kruden eval()-s. Die Performance kommt duch exzessives Caching.

            Da steckt kein bißchen Erfahrung drin. *no offense*


            *) Link in deinem Profil. Ich will es nicht namentlich nennen, denn Google liest mit.

            Kommentar


            • #36
              Non-Pipifax-Seiten, bei denen ich hinter die Kulissen gucken konnte, haben durchweg gar kein Templatesystem/-Engine verwendet. Von PHP mal abgesehen Und ich durfte schon ein bisschen sehen
              [FONT="Helvetica"]twitter.com/unset[/FONT]

              Shitstorm Podcast – Wöchentliches Auskotzen

              Kommentar


              • #37
                Zitat von piratos Beitrag anzeigen
                Das ist ein Minibeispiel um das zu verdeutlichen und nichts konkretes im Einsatz.
                Wir hatten hier aber ein konkretes Problem zu lösen -- und der hierfür unnötige Einsatz einer Template-Engine dürfte den Threaderöffner eher verwirren, denn erhellen. Er hatte ja so schon Schwierigkeiten, den gegebenen Ratschlägen zu folgen.


                Und was Templateengine betrifft musst du mir rein nichts erzählen, nicht nur das ich Jahre an Erfahrungen mit diversen habe sondern zudem auch noch eine eigene.

                Und wie man so etwas perfomant gestaltet das muss mir auch keiner erzählen das ist im brutalen Altagseinsatz und das nicht bei Pippifax - Websites.
                Ich hatte keineswegs vor, dir auf die Füße zu treten.
                Die "Performance-Betrachtungen" meinerseits waren hauptsächlich für den Threaderöffner gedacht. Allerdings redet er anscheinend nicht mehr mit uns ...

                Und das eine Templateengine höchst performant eingesetzt werden kann, das wissen alle meine User.
                Das mag sein, aber in dem Fall hier geht es um ein Script, das jedesmal dann gestartet wird, wenn eine kleine Grafik (so 'ne Art "webbug") angefordert wird. Das ist ansich schon Overkill, ein paar MByte Script-Engine anzuwerfen, nur um ein paar Bytes an Binärdaten auszuliefern. Da muss ich nicht auch noch eine Template-Engine includen.

                Ich würde sogar soweit gehen, das Laden der (Grafik-)Datei ganz zu wegzulassen. Das hat neben der Einsparung von Dateioperationen den Vorteil, dass man keine Fehler mehr abfangen muss.

                PHP-Code:
                <?php
                header
                ('Content-Type: image/gif');
                echo 
                base64_decode(
                    
                'R0lGODlhCAAIAIAAAAAAAPACH5BAAAAAAA//'.
                    
                'LAAAAAAIAAgAAAIKjI9pcKwPE5guFgA7'
                );
                ?>
                Zuletzt geändert von fireweasel; 08.07.2009, 17:51.
                Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                Kommentar


                • #38
                  Zitat von fireweasel Beitrag anzeigen
                  PHP-Code:
                  <?php
                  header
                  ('Content-Type: image/gif');
                  echo 
                  base64_decode(
                      
                  'R0lGODlhCAAIAIAAAAAAAPACH5BAAAAAAA//'.
                      
                  'LAAAAAAIAAgAAAIKjI9pcKwPE5guFgA7'
                  );
                  ?>
                  Aber auch nur, wenn es wirklich kleine Grafiken sind, wo der Request-Overhead die Dateigröße (in Summe) übersteigt. Ansonsten stehst du hier nämlich vor einem neuen Problem: Das Chaching des Browsers wird so ausgehebelt.
                  [FONT="Helvetica"]twitter.com/unset[/FONT]

                  Shitstorm Podcast – Wöchentliches Auskotzen

                  Kommentar


                  • #39
                    Zitat von unset Beitrag anzeigen
                    Aber auch nur, wenn es wirklich kleine Grafiken sind, wo der Request-Overhead die Dateigröße (in Summe) übersteigt.
                    Klar.

                    Zitat von unset Beitrag anzeigen
                    Ansonsten stehst du hier nämlich vor einem neuen Problem: Das Chaching des Browsers wird so ausgehebelt.
                    Was hier möglicherweise sogar gewünscht ist?

                    Die Anwendung als "Trackingpixel" schließt diese Interpretation zumindest nicht aus ...
                    Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                    Kommentar


                    • #40
                      Naja, aber bei einem Trackingpixel _will_ man ja einen weiteren Request, und keinen Inlinepixel. Wenn man nämlich in der Lage ist, eine Grafik inline einzubauen, braucht man keinen Trackingpixel mehr.
                      [FONT="Helvetica"]twitter.com/unset[/FONT]

                      Shitstorm Podcast – Wöchentliches Auskotzen

                      Kommentar


                      • #41
                        @unset: Wie kommst du auf inline?

                        Kommentar


                        • #42
                          Oh, wie peinlich. Ich sollte die Posts besser lesen ;-)

                          Hab da irgendwie in dieser Art was gelesen:

                          PHP-Code:
                          <img src="data:image/gif;base64,..." /> 
                          [FONT="Helvetica"]twitter.com/unset[/FONT]

                          Shitstorm Podcast – Wöchentliches Auskotzen

                          Kommentar

                          Lädt...
                          X