Jeremy: Bildergalerie - Optimierung

Hallo!
Für unsere eher mäßig besuchte Vereinshomepage benutze ich eine JS-gestützte Bildergalerie, welche die Bilder per PHP in eine Liste geliefert bekommt - aus dieser Liste holt sich das Javascript dann die Bilder. Die Bilder liegen in einer guten Ordnerstruktur als High-Resolution und als Thumbnail vor. Die Ordnerstruktur ist:

./img/scr_img/$JAHR/$ORT/$FILE.jpg
./img/thumb/$JAHR/$ORT/$FILE.jpg

Zurzeit geht mein Script wie folgt vor:
es wird per opendir und readdir der Ordner, auf welchen zugegriffen werden soll, geöffnet - die Parameter werden per GET übertragen und validiert (RegEx+Checkarray). Anschließend werden alle Dateien im Ordner nacheinander auf ihren MIME-Typ geprüft und nur solche angezeigt, wessen MIME-Typ auf JPEG hinweist.

Der Inhalt der Bildergalerie erweitert sich im Sommer und Herbst fast wöchentlich, im Winter saisonal bedingt eher selten.
Bisher machte mir das Einfügen in die Bildergalerie kaum Arbeit (abgesehen vom nicht zu umgehenden schneiden, aussortieren und verkleinern der Bilder).
Nun spiele ich mit dem Gedanken, mir ein Script zu schreiben, welches die URI der Bilder in eine SQL-Tabelle speichert, um dort dann von der Bildergalerie abgerufen zu werden. Bei dieser Gelegenheit könnte das Script auch noch die Auflösung der Bilder ändern.

Wäre dieser Schritt ratsam? Steht der Performancegewinn in Relation zum Arbeitsaufwand oder sollte ich das alte System lieber behalten? Inwiefern ist die Bildbearbeitung mit PHP besser oder schlechter als mit Programmen wie IrfanView? Wie sehr ist eine Verarbeitung per SQL performanter als mein altes System? Speziell in Hinblick auf den MIME-Typ-Check per mime_content_type($file) würde mich interessieren, ob und wenn ja wie sehr diese Funktion den Programmablauf weniger performanter macht.

Vielen Dank für eure fachkundigen Antworten und liebe Grüße aus Norddeutschland.

Jeremy.

  1. Grüße,
    ganz doll performant, wäre "hartes" generieren von html nach dem update, da ich annehme, dass bilder 1xwöchtnelich (max) hinzukommen, oder auf jeden fall seltener als besucher der seite, macht es sinn einfach nur die daten fest zu generieren und zu speichern.
    MFG
    bleicher

    --
    __________________________-

    FirefoxMyth
    1. Grüße,
      ganz doll performant, wäre "hartes" generieren von html nach dem update, da ich annehme, dass bilder 1xwöchtnelich (max) hinzukommen, oder auf jeden fall seltener als besucher der seite, macht es sinn einfach nur die daten fest zu generieren und zu speichern.
      MFG
      bleicher

      Das wäre wohl die beste Lösung, nur leider wäre das denke ich ein hoher Arbeitsaufwand - unter anderem, weil zurzeit nur 16 Bilder pro Seite angezeigt werden und es teilweise Alben gibt, in denen bis zu 160 Bilder sind - natürlich werden in diesem Fall nur die nötigen 16 Bilder pro Seite geladen und überprüft. Zurzeit fasst unsere Bildergalerie knapp 700 Bilder.
      Hast du einen Tip für mich, wie ich mein dynamisches Script möglichst effektiv und effizient in statisches HTML umwandle?

      ob_get_contents() und fopen() kenne ich natürlich, nur müssten zum Beispiel die Seitenlinks geändert werden, sprich: ich müsste dann vor dem Speichern die Links per preg_replace($p, $r, $s) modifizieren. Oder gibt es da eine mir unbekannte "zahme" Alternative?

      1. Hello,

        Das wäre wohl die beste Lösung, nur leider wäre das denke ich ein hoher Arbeitsaufwand

        Ein hoher Arbeitsaufwand wird es vor Allem ohne Plan. Also mach Dir einen!

        1. Stufe der Analyse:
        a) Was hast Du zuerst?
        b) Was soll am Ende dabei herauskommen?

        2. Stufe der Analyse:
        a) Wie kann der Weg zum Ziel aussehen?
        b) welches sind "harte Eingangsgrößen" (sind immer vorhanden)
           und welches sind weiche (können, müssen aber nicht vorhanden sein)?
        c) welche Variantionen sind denkbar bezüglich der Verarbeitung?
           -- Stapelbetrieb  (erst alle Bilder sammeln, dann alle umrechnen, dann Seiten generieren)
           -- intermittierender Betrieb (immer sofort neues Thumb generieren, wenn neues Bild hinzukommt)
           -- dialogorierter Betrieb (dem Benutzer Möglichkeiten zur stufenweisen Beeinflussung geben)
        d) welche Beeinflussungsmöglichkeiten soll der User generell haben?
        e) welche Goodies möchtest Du dem User ggf. später noch anbieten?

        Und wenn Du dir über die obigen Punkte klar geworden bist, kannst Du daraus nach und nach ein Programmkonzept entwickeln.

        Zur Frage des MIME-Types der Bilder noch ein paar Denkanstöße:
        http://forum.de.selfhtml.org/archiv/2009/3/t184887/#m1226218
        http://forum.de.selfhtml.org/archiv/2009/5/t187107/#m1243274

        Und bedenke bitte auch, dass Du per HTTP/s zugängliche Bilder NICHT in einem Verzeichnis ablegst, dass durch irgendeinen Parser ausgewertet wird. Bilder können so manipuliert werden, dass sie z.B. gültige PHP-Sequenzen enthalten, die dann bei Direktaufruf der Ressource ausgwertet werden könnten.
        Dies ergibt eine Hintertür/Sicherheitslücke auf dem Server.

        Für das Bilderverzeichnis, wenn es denn direkt per HTTP/s erreichbar ist, müssen also die Engines der Parser deaktiviert werden.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Und bedenke bitte auch, dass Du per HTTP/s zugängliche Bilder NICHT in einem Verzeichnis ablegst, dass durch irgendeinen Parser ausgewertet wird. Bilder können so manipuliert werden, dass sie z.B. gültige PHP-Sequenzen enthalten, die dann bei Direktaufruf der Ressource ausgwertet werden könnten.
          Dies ergibt eine Hintertür/Sicherheitslücke auf dem Server.

          Für das Bilderverzeichnis, wenn es denn direkt per HTTP/s erreichbar ist, müssen also die Engines der Parser deaktiviert werden.

          Davon wusste ich bisher nichts - gibt es hierzu einen Artikel der Fachpresse?

          Liebe Grüße aus dem schönen Oberharz

          Welch Zufall, ich war am Wochenende beim Schützenfest in Braunlage bei Goslar - ist das überhaupt im Oberharz?

          Liebe Grüße!

          1. Hello,

            Für das Bilderverzeichnis, wenn es denn direkt per HTTP/s erreichbar ist, müssen also die Engines der Parser deaktiviert werden.

            Davon wusste ich bisher nichts - gibt es hierzu einen Artikel der Fachpresse?

            Der ist leider noch nicht fertig. Dazu fehlt mir im Moment die Ruhe...
            http://wiki.selfhtml.org/wiki/Artikel:PHP/File_Upload

            Welch Zufall, ich war am Wochenende beim Schützenfest in Braunlage bei Goslar - ist das überhaupt im Oberharz?

            Goslar liegt _am_ Harz und hat den Harz jahrhundertelang ausgebeutet (Kaiserpfalz), wenn es die Grafen zu Stolberg nicht gerade getan haben...

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de