Viele Bilder resizen

Warper

Erfahrenes Mitglied
Hallo zusammen,

ich haenge immer wieder an diesem Problem und dieses mal moechte ich es endlich einmal loesen anstatt zu umgehen. Ich habe auch bereits zahlreiche Suchen angestellt aber nie etwas gefunden was mir weiterhilft.

Situation:
Ich arbeite an einem MINI-CMS. Eine Galerie Funktion ist so geloest, dass (fast) keine Administration noetig ist. Der Benutzer laed die Bilder in eine Order (mit einem Unterordner) per FTP hoch. Danach wird in der Admin ein "Update Gallery" aufgerufen und es werden von allen neuen Bildern Thumbnails generiert.

Das erspart meiner Meinung nach viel Arbeit und macht die Pflege der Galerie sehr einfach. Bildernamen werden vom Dateinamen uebernommen, Kategorien vom Ordnernamen.

Bsp:

- Bilderorder
-- Galerie 1
--- Bild 1
--- Bild 2
--- Bild 3
-- Galerie 2
--- Bild 4
--- Bild 5
usw.

Nun zum eigentlichen Problem. Wie auch viele andere stosse ich dabei an das Problem, dass ab einer groesseren Menge an neuen Bildern das Script mit einem Memory exceeded oder Timeout abbricht.

Meine erste Idee war es das eigentliche resizen in einen iFrame zu legen und dort Schritt fuer Schritt mit einem header: Location ein sich selbst aufrufendes Script zu erstellen. Klappt auch nicht, zumindest Safari bricht das nach 16 Schritten ab.

Hat irgendjemand eine Idee wie das ganze zu loesen waere? Alles was ich bislang gefunden habe bezieht sich auf den Upload und nicht auf das resizen.

Ich wuerde mich freuen einen kleinen Denkanstoss zu bekommen.

Gruesse,
Steffen

PS: Entschuldigt das fehlende sz und Umlaute, sitze auf der anderen Seite des grossen Teichs :)
 
Das Updatescript könnte man als Cronjob einrichten und auf eine maximale Anzahl an Bildern begrenzen. Dann ruft man es alle 5-10 Minuten oder so auf, es schaut ob was zu tun ist und wenn ja, macht es meinetwegen 10 Bilder (oder wie viele es unter dem gegebenen Speicher halt schafft).

Man könnte PHP natürlich auch mehr Speicher und Zeit einräumen.. ;)
 
Wie wäre ein
echo '<meta http-equiv="Refresh" content="1; url='.$eigeneURL.'">'; mit nen index z.b. wo du die bilder hochzählst und nach jeden eine ausgabe erhältst, wenn du es per "Hand" aufrufst dürfte das doch funktionieren.

mfg

Dann muesste ich aber antizipieren wie lange ich brauche um (zb.) ein Bild zu resizen, da ich den Refresh ja nicht triggern kann. Im best case dauert es damit dann nur etwas laenger als es eh schon dauert, im worst case wird ein Bild nicht zu ende geresized.

Oder uebersehe ich da etwas?

Edit: Doch, ich koennte PHP den HTML Header mit dem Refresh erst dann ausgeben lassen wenn das Bild bereits geresized wurde.
 
Ich weiß nicht, ob die Verwendung eines anderen Datentyps statt eines - wahrscheinlich verwendeten - Arrays die Performance-Schübe geben wird. Hier wird die Thumbnail-Generierung die CPU fressen, nicht das iterieren über die Elemente.

Was man wirklich bräuchte wäre sowas wie Stateless Threads, die auch weiter laufen, wenn das Script die Arbeit schon beendet hat. Die Idee kam mir schon vor Jahren, ist aber mangels Zeit und internen Kenntnissen über den Sourcecode von PHP nie umgesetzt worden.

Nichtsdestotrotz ist die SPL viel zu wenig verwendet, was man auch an der Tatsache erkennen kann, dass die Dokumentation dazu sehr zu wünschen übrig lässt.
 
Edit: Doch, ich koennte PHP den HTML Header mit dem Refresh erst dann ausgeben lassen wenn das Bild bereits geresized wurde.

Es hat tatsaechlich genau so funktioniert. Einwandfrei. Ich habe meine Bilder Resize Probleme auf immer geloest. :)

Wenn jemand Hilfe braucht es entsprechend umzusetzen, bitte melden.

Gruesse,
Steffen
 
Zurück