Header(Location: ...) mit Ladebalken?

mille

Erfahrenes Mitglied
Hallo!

Ich habe mir eine kleine bildergalerie geschrieben, welche Bilder einliest (aus einem Verzeichnis des Webserver) und diese Bilder dann resized (auf eine Maximalgröße) und Thumbnails erstellt. Die Thumbnails werden dann noch eingefärbt.
.... Jede Menge Arbeit für das Skript.

Das ganze überschreitet auch die Max_execution_time von 30 Sekunden auf meinem Webserver. Also bedarf es einer Lösung.
Ich habe mir überlegt pro Bild (also resizen, thumbnail erstellen und einfärben) ein Skriptdurchlauf mache und dann das Skript von vorne starte (Header(Location: index.php?action=perform&bildID=2).
Das sollte ja kein Problem darstellen. Gerne würde ich mir aber anzeigen wie weit der Fortschritt ist. Dazu bedarf es ja eines LAdebalkens.
Der an sich stellt ja auch kein Problem dar. leider darf ja vor der Ausgabe des Headers keine Ausgabe an den Client/Browser gesendet werden.

wie kann ich das Problem also lösen? Habt ihr ne Idee?

MfG
mille
 
hi,

also ich hatte ein ähnliches Problem.

Ich hatte den Header schon gesendet und wollte trotzdem ne Weiterleitung.

Lösung:
PHP:
<meta http-equiv="refresh" content="0; URL=<ziel>">

für die 0 kannste die Sekunden angeben, die des Script mit der Weiterleitung warten soll.
Und anstelle von <ziel> kommt natürleich deine URL hin.

Hoffe geholfen zu haben.

MfG
paddz
 
Soweit ich weiß gibt's aber viele die solche Weiterleitungen unterdrücken, dann müsste man jedes mal 'nen Link klicken oder so damit es weitergeht.

Aber zwischen headern wirst du nichts an den Browser senden können, da hast du schon Recht.

Eine schönere Lösung als die eben genannte wirst du wohl kaum finden. Dauert es denn so lange die Bild-Größe zu ändern?

Könnte man die Schleife vllt inerhalb der Page durchlaufen lassen und dann immer echo'n:

bla% abgeschlossen...
bla2% abgeschlossen...


ist aber auch nicht schön! :-(
 
Na bisher wäre das nur für den Adminbereich meiner HOMEPAGE. Die idee mit dem http-refresh hatte ich auch schon.
Aber das sollte die Notlösung bleiben *g*. Dann verzichte ich lieber auf den Ladebalken. Ich will die Klasse ja auch kommerziell nutzen können.

Und ja, das Skript brauch recht lange. Aber das ist auch kein Wunder. Ich lade ja Fotos auf meinen Webspace die 2MB groß sind. also 4-6 Megapixel. Und die alle zu resizen, alle nocheinmal zu Thumbnails zu verarbeiten und ausserdem noch einmal jedes Thumbnail Pixelweise auslesen und die Farbe des Pixels ändern kostet n Haufen Zeit.
Was ja auch kein Wunder ist, da PHP ja keine Grafik-Bearbeitungs-Sprache ist :D.
 
Ich hab keine Ahnung, ob das so möglich ist:
Wenn du eine Session/Cookie/Whatever setzt, kannst du ja immer noch die header()-Funktion aufrufen, richtig? Dann könntest du ja einen <iframe> machen, der eine Datei aufruft, die die Ladebalken-Grafik erstellt. Nennen wir sie mal balken.php.
In der balken.php richtest du's jetzt halt so ein, dass sich der Prozentwert nach der Session/Cookie/Whatever richtet ...
Wenn du jetzt den Iframe jetzt jede paar Sekunden refreshen lässt, müsste das eigentlich klappen. Nur das mit dem Refreshen ist halt nicht so optimal, aber es kommt ja auch nicht auf die Sekunde an :)

Hoffentlich klappts, wenn nicht: Es war nur die Idee eines gerade aufgestanden Menschens, der noch in seiner Traumwelt lebt :P
 
Das werd ich mir erstma merken.
So ähnlich hab ich auch gerade gedacht. Ich speichere den aktuellen Stand in einer Session und bearbeite ein bild, gebe das ergebnis aus (zB Bild 5 von 10 bearbeitet) und refreshe dann.
Wenn das kommt der Ladebalken :D.

Thx
 
Wieso speicherst du die bereits verarbeiteten Bilder nicht einfach, sodass sie nicht bei jedem Aufruf neu verarbeitet werden müssen?
 
Es geht nur um den Adminbereich. Und der speichert natürlich die bilder. Das Ganze würde sonst auch keinen Sinn ergeben.
 
Zurück