fabi.me

PHP Fortschrittsbalken / Ladebalken

VN:F [1.9.22_1171]

Wenn man einen lange dauernden PHP-Script auf dem Server ausführt, ist es praktisch, zwischendurch den Fortschritt mitverfolgen zu können. Diese PHP-Klasse ermöglicht einen sehr einfachen und schnellen Einbau eines Fortschrittsbalkens in z. B. einen PHP-Installationsscript oder sonstige serverlastige Anwendungen.

Für folgene Serveranwendungen ist diese Klasse geeignet:

  • Kopiervorgänge mit mehreren Dateien oder gepuffertes Kopieren
  • Viele SQL abfragen wie z.B. das Backupen von Daten oder Optimieren von mehreren Tabellen
  • Beim Generieren/Renderen einer Ressource z.B. Videos oder Audiodateien

Für folgende Anwendungen ist die Klasse nicht geeignet:

  • Dateiuploads
  • Das Ausführen eines eines einzelnes externen Befehls (z.B über exec())

Während der Laufzeit kann einfach die Funktion step(), mit einem optionalen Parameter, der angibt, um wie viel sich der Fortschritt geändert hat, aufgerufen werden. Es wird sofort ein kurzer Java Script Code an den Browser gesendet, der den vorher initialisierten Ladebalken anpasst. Es ist daher ausschließlich PHP >=4.4 und ein Browser mit JavaScript-Unterstützung erforderlich, kein CGI oder PERL.

Mehrere Fortschrittsanzeigen pro Seite werden unterstützt, sie können alle individuell angepasst werden.

Ein Beispiel liegt bei.

Neue Version 1.3: set($fortschritt) Funktion hinzugefügt

Demo

Readme

PHP Fortschrittsbalken / Ladebalken, 4.5 out of 5 based on 2 ratings
PHP Ladebalken
PHP Ladebalken
php_progressbars1.3.zip
Version: 1.3
3.4 KiB
7900 Downloads
Details

Kommentare

  • VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Hallo,
    und wie bindet man diese Script in ein upload formular ein so das dieser Balken angezeigt wird wenn eine Datei gerade hochgeladen wird.

  • fabi sagt:
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Das ist damit leider nicht möglich. Es gibt jedoch ein ganz gutes, opensource JavaApplet unter http://www.jupload.biz/ , dass dir den Fortschritt anzeigen kann.
    Außerdem gibt es noch ein Plugin für den Apache, mit dem PHP den Fortschritt ermitteln kann.
    Weiteres findest du unter
    http://pdoru.from.ro/ und http://bluga.net/projects/uploadProgressMeter/
    Eine andere Methode mit AJAX: http://www.devpro.it/upload_progress/
    und zum Schluss noch mit CGI/Perl und PHP: http://www.devpro.it/upload_progress/

    Sollte was nüztliches dabei sein ;)

  • x.treme sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Kann man es irgendwir verändern das auch eine % Anzeige kommt.
    Antwort per email wäre nett =)
    MfG

  • Arc sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Ist es möglich dieses Script für einen EXEC Befehl, welcher etwas länger dauert zu verwenden?

    Das wäre echt klasse!… nur die Einbindung kann ich mir nicht vorstellen.

    $myprogressbar1->print_code();
    $myprogressbar1->step();
    exec(“bash ./script.sh”);

    $myprogressbar1->complete();
    ???
    Funktioniert so nur gar nicht *g*

  • bronco sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    extrem coole klasse. sowas hat ich schon immer gesucht. habs direkt verwendet in meinem projekt. thx für die arbeit!!

  • guest sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Es muss doch irgendwie möglich sein den Balken so zu programmieren das wenn 100% erreicht wurde, “Erfolgreich” daneben steht ?!

  • Eratech sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Hallo!

    Habe das Skript jetzt ausprobiert und irgendwie will es bei mir nicht funktionieren.

    Ich habe ein Formular indem die Datenbankdaten eingetragen werden.
    Nach dem Klick auf den Button “Installieren”
    Lädt die seite etwas und auf der nächsten Seite bekomme ich einfach nur die 2 Balken angezeit.

    Auf dem ersten ist nichts zu sehen und der zweite ist zu 3/4 gefüllt.
    Hier auf der Demo sieht das genau gleich aus wie bei mir.^^

    Woran kann das liegen?

    LG
    Eratech

  • fabi sagt:
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    @Eratech:
    Schau dir das Beispiel an.
    Zuerst muss die in deinem PHP-Skript mit “new progressbar()” die Ladebalken erstellen, dann must du die Funktion “step()” in den zeitaufwendigen Code integrieren. Bei Datenbankabfragen kannst du z.B. zwischen den mysql_query()-Aufrufen immer wieder die step()-Funktion ausführen:
    foreach($queries as $sql)
    {
    mysql_query($sql);

    $progressbar->step();
    }
    Wenn ein einzelner Query längere Zeit dauert, kann der Fortschritt mit dieser Klasse leider nicht ausgegeben werden.

  • Adrian sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Huhu.
    Sieht sehr nett aus, funktioniert aber nicht wirklich irgendwie.

    Ich bin dabei das Script in einem “update.php” zu integrieren.
    Diese updatet das aktuelle verzeichnis indem es andere datein aus einem unterordner mittels copy(); kopiert.

    Zwischen den copy’s habe ich das mit den $progressbar->step(); eingefügt.

    Aber irgendwie “läd” der da garnichts.
    Ich komm mir da irgendwie verarscht vor, da PHP eine Serverseitige Programmiersprache ist, und den Inhalt erst DANN ausgibt, wenn die seite “fertiggeladen” ist.

    Die “GEbrauchsanleitung” ist sehr einfach zu verstehen, aber es klappt halt nicht.

    Oder gibt es da noch diverse einstellungen, die man in der PHP.ini machen muss? Denn ich habe meinen Webserver erst vor kurzem neu aufgesezt.

  • fabi sagt:
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Eingentlich müsste es bei deiner Anwendung funktionieren. Könntest du vielleicht mal auszüge aus dem PHP-Code schicken und den HTML-Quelltext der Seite, wenn sie zu ende geladen ist. Du kannst auch an meine E-Mail schreiben, die Adresse findest du im Impressum.

  • stefan sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Hallo ist es irgendwie möglich den balken nur bis einen bestimmten Prozentsatz laden zu lassen??

  • fabi sagt:
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Schau dir das Beispiel an:
    http://fabi.me/misc/progressbar/example.php
    Wenn du zum schluss complete() nicht aufrufst, läd der Balken nicht vollständig. Wenn du zB. 60 mal step() aufrufst, bleibt er bei 60%

  • Bob2k sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Hi,

    erstmal danke für Arbeit das Script funzt gut. ;)
    Ich habe aber eine Frage:
    Ich will, dass nicht bei jedem Step die übergebenen Prozent angehängt werden (Step(1) zb), sondern eine übergebene Prozentzahl. Das Script soll mir bei Aufruf von step(24) 24%, bei step(32) 32% usw anzeigen. Wie bekomm ich das hin?

    mfg

  • MyXoToD sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Die Klasse ist echt toll. Klappt super.
    Werde diese auf jeden fall gut gebrauchen können! :)
    Vielen Dank für die Arbeit.

  • Fassi0815 sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Hallo erst mal
    Dein Script und WUNDERFEIN und sehr Vielseitig gute arbeit.
    Dennoch gibt es leider innerhal einer Tabelle probleme mit der Darstellung.
    Der Balken Läuft von innen nach aussen (wunderlich drein schau).
    Hast Du damit schon erfahrung gemacht ?.
    Gruß aus dem Wunderschönen Saarland

  • Fassi0815 sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    @ guest sagt: 10. Mai 2009 um 10:33

    if($myprogressbar1->value == 100){$end_code = “Fertig”;}

    $end_code kannst du danach ausgeben !

    dein post ist zwar schon etwas her aber vlt. haben andere auch diese frage

    Gruß aus dem Wunderschönen Saarland

  • Fabi sagt:
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Hallo Fassi0815,
    stelle sicher, dass die Tabellen-Zelle, in der sich der Ladebalken befindet, auch ohne diesen die maximale Breite des Balkens hat. Am Besten legts du die absolut fest, dh zb <td width="200">...</td>. Ansonsten sende mal einen Screenshot oder den PHP/HTML Code.

  • Fassi0815 sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Hallo Fabi

    was für eine Geburt.
    Es lag an align=”center” …. (an den kopf fass).
    Habe es jetzt via CSS positioniert und siehe da es rennt wie Wutz.
    Vielen dank für Deinen Tip mit der Tabelle.

    Gruß aus dem Wunderschönen Saarland

  • Fabi sagt:
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    So, es gibt jetzt auch Version 1.3 mit der neuen Funktion set($fortschritt), mit der man den aktuellen Fortschritt absolut setzen kann.
    Außerdem wurde der Code optimiert und einige Bugs behoben. (Auch die Ausrichtung wie bei Fassi0815 wird jetzt automatisch korregiert, kannst dein align=”center” also drin lassen ;) )

  • Stefan sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    “Einfach Klasse diese Klasse”

    Danke dafür!

    Stefan

  • Roland sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Hi,

    ansich ein sehr schönes Script.
    Ich habe nur das Problem, dass es auf meinem aktuellen Webspace nicht funktioniert.^^
    Ich habe alles erst einmal offline mit xampp ausprobiert. Da funktioniert alles.
    Wenn ich es nun auf meinen Webspace lade, wird die Seite immer komplett geladen, und dann erst dargestellt.

    Selbst die Beispieldatei funktioniert nicht.
    Die Beispielseite lädt also eine gefühlte Ewigkeit, und wird dann mit dem ersten Balken auf 15 % und dem zweiten Balken auf 100 % dargestellt.
    Und während die Seite geladen wird, ist sie einfach weiß.

    Ich habe es auch mit mehreren Browsern probiert.
    Also liegt das eindeutig am Webspace.
    Auf dem Webserver läuft die PHP Version 5.3. (Mit der 5.3 habe ich es auch in xampp getestet.)
    Somit bleibt eingeltich nur irgend weine Einstellung am Server.

    Die Frage ist nur, was muss ich einstellen?

    (Weiter oben hatte jemand anscheinen ddas gleiche Problem. Vielleicht gibt es ja schon eine Lösung. :-)

    Vielen Dank

  • OBrien sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Hallo,

    Ich habe das gleiche Problem wie Roland.
    Einen one.com Webspace bei dem auch das Example nicht läuft.
    Seite lädt zunächst lange und zeigt dann 15 bzw. 100 % bei den beiden Balken….

    Jemand eine Idee?

    Danke

  • OleR sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Hallo,
    ich finde das Script echt klasse, aber ich möchte gerne den Balken auf 300px Breite bringen und dabei soll natürlich auch der grüne Ladebalken, wenn er 80% hat, das auch so anzeigen.
    Ich habe den DIV auch schon so breit hinbekommen.
    Die %-Zahl steht auch schon mittig.
    Aber der Ladebalken bleibt in der Mitte stehen wenn ich 100% haben sollte, gefühlt bei den alten 100%.
    Also 100% ist bei mir ca 50%… :(
    Ich hoffe mir kann da einer helfen, wie ich die ganze Breite inkl. Ladebalke verändern kann.
    Vielen dank.

  • PhilG sagt:
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

    Hi, super Klasse, vielen Dank dafür!!

    Eine wichtige Funktion fehlt mir allerdings noch – der Ladebalken sollte während dem Laden angezeigt werden, so wie der Name schon sagt, aber nicht mehr auf der final geladenen Seite. Er müsste also nach der Anzeige von “100%” nach einer vorher definierten Zeit von ca. 1-2 Sekunden verschwinden und den eingenommenen Platz freigeben. Andernfalls steht hier andauern ein Balken mit “100%” auf der Seite, was ich zu dem Zeitpunkt der geladenen Seite als sinn- und nutzlos erachte.

    Hat jemand eine Idee wie das funktionieren könnte?

    Vielen Dank,
    Phil.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>