Thumbnails und deren Erstellung

Nachdem ich mich die letzten paar Tage mehr oder weniger erfolgreich mit Gallery 2 herumgeschlagen habe und es mir in mehrerlei Hinsicht ernsthaft Kopfzerbrechen bereitet hat („Manche Bilder lassen sich beim besten Willen nicht importieren…“, „Wie komme ich an die Inhalte ran, wenn ich grade kein Browser bin, sondern ’ne andere Webseite (soll passieren…)?“ oder „Es frisst alle meine Resourcen!“) – und schon bin ich wieder beim Stand von vorher:

Ich mache es selbst.

Immerhin habe ich inzwischen entschieden, kein verteiltes System mehr draus zu machen. Alles auf einen Server vorerst.

Heute habe ich ein nicht ganz unwichtiges Problem gelöst: Thumbnails. Ich weiß, die hab ich schon etwa 5 mal vorher auch gelöst, aber jedes mal wurde es wieder ein bisschen besser. Langsam aber sicher bin ich glaube ich beim Optimum angekommen.

Eine der Schwachstellen meiner Thumbnail-Lösungen bisher war, daß sie über dynamische Scripts liefen, die in jedem Fall Resourcen für den PHP-Interpreter futtern. Und sei es nur, um zu überprüfen, ob die Datei da ist – und wenn ja, einfach eine Weiterleitung zur Thumbnail-URL zu machen. Da solche Galerieseiten zumindest bei mir nicht selten ein paar hundert Bilder enthalten, bedeutet das mehrere hundert PHP-Seitenaufrufe, die eigentlich nichts machen.

Okay, was war bisher:

  • Zum Anzeigen eines Thumbnails wurde eine PHP-Seite aufgerufen.
  • Diese hat überprüft, ob die Thumbnail-Datei schon existiert:
    • Falls ja: Ressourcen verschwenden, nichts tun…
    • Falls nein: Datei erstellen
  • Weiterleiten zur URL des Thumbnails

Und jetzt?

  • Die URL des Thumbnails wird direkt aufgerufen
  • Datei vorhanden?
    • Falls ja: Alle glücklich, wir sind schon fertig, es wurde kein PHP aufgerufen
    • Falls nein:
      • In der .htaccess steht „ErrorDocument 404 /thumber.php“, also wird /thumber.php aufgerufen.
      • thumber.php schaut sich $_SERVER[„REQUEST_URI“] an, und weiß daher, welche Datei eigentlich hätte aufgerufen werden sollen
      • So weit möglich erstellt es sie also…
      • … und schickt ihren neuen Inhalt an den Browser

Für jede Datei bzw. ihren Thumbnail erfolgt der Aufruf des PHP-Scripts also nur ein mal. Alles andere läuft über den Austausch statischer Dateien. Alle sind glücklich, der Server ist entlastet.

Und das allerbeste: Es funktioniert sogar 😉