Andreas: Fortschrittsanzeige während PHP-Verarbeitung

Hallo.

Ich habe ein PHP-Skript welches alle Bilder in einem Ordner einließt und verkleinert. Nun ist das Problem, dass dieser Vorgang recht lang dauert. Deshalb wollte ich eine Anzeige wie viel Prozent bereits geschaft sind.
Ich habe aber keine richtige Idee. Die normale Ausgabe mit flush sieht äußerst unschön aus.
Ich hab das mal bei irgend einer Gallery auf PHP-Basis gemacht: da wurde einfach immer eine Anzeige "157/400" oder sowas hochgezählt. Ich nehm an das war dort auf Javascript-Basis, weil ich keine Idee wie ich mit PHP die komplette anzeigen lasse und dann im Nachhinein weiter oben etwas ändere...
Kann mir jmd dazu einen Tipp geben?

Gruß, Andreas

  1. Allerhöchstens indem du per CSS einen Balken von unten nach oben verfrachtest und quasi während des ladens auch weiteres Material an den Browser sendest. Damit könntest du eine Art Balken erzeugen, der dir gleichzeitig den Fortschritt signalisiert.

    Ist aber eigentlich keine schöne Lösung. Da sind Laufzeitausgaben am besten. Wenn dus als Adminbereich planst vielleicht als JAVA-Applet oder eben auch JavaScript.

  2. Hi Andreas,

    Kann mir jmd dazu einen Tipp geben?

    Mache Programme gehen beim Setup so vor, dass sie solche Sachen in mehreren Schritten erledigen, also z.B. so:

    • Verzeichnis öffnen, einlesen
    • Bilder 1 - 10 bearbeiten
    • echo '<meta http-equiv="refresh" content="2" />'
    • Ladebalken mit X Prozent ausgeben

    Das Script lädt sich dann nach 2 Sekunden neu, und verarbeitet Bilder 11 - 20, und zeigt einen Ladebalken mit mehr abgearbeiteten Prozent an. Nachteil dieser Methode: Es finden unter Umständen eine Menge Requests an den Server statt, was natürlich alles Traffic kostet.

    Eine andere Möglichkeit wäre, den PHP-Prozess zu forken und im Hintergrundprozess die Bilder zu verarbeiten, während der Vordergrundprozess eine Seite mit Ladebalken ausgibt. Per AJAX dann den Server abfragen wie weit die Bildverarbeitung bereits ist (ein Erkennungsmechanismus dafür müsstest du dir selber ausdenken) und mit dem Rückgabewert einen entsprechenden Ladebalken anzeigen.

    Viele Grüße,
      ~ Dennis.

  3. Hi,

    Kann mir jmd dazu einen Tipp geben?

    Einfach mit flush() DHTML ausgeben.

    Auf Wunsch kann ich auch gerne meine Funktionen veröffentlichen ...

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    1. Auf Wunsch kann ich auch gerne meine Funktionen veröffentlichen ...

      Jo, das würde mich interessieren, da das ganze ein eine-Datei-Projekt und möglichst leichtgewichtig bleiben sollte und ich keine Lust hatte noch AJAX und solche Scherze zu verwenden...

      Gruß, Andreas

      1. Hi,

        Jo, das würde mich interessieren,

        Kein Problem: JavaScript mit PHP

        Die Funktionen sind zwar nicht kommentiert und jeweils in einer Zeile, aber ich hoffe, das Beispiel reicht erstmal aus ...

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        1. Die Funktionen sind zwar nicht kommentiert und jeweils in einer Zeile, aber ich hoffe, das Beispiel reicht erstmal aus ...

          Geht wunderbar, danke. Interessant an der ganzen Angelegenheit fande ich, dass man bei jeder Aktualisierung ein komplett neuen <script>-Bereich erzeugen muss, da sonst das Javascript nicht ausgeführt wird...

          MfG Andreas