PHP Fortschrittsbalken / Ladebalken
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 biography of Steve Jobs. 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 mac os x 10.6 다운로드. 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
Hallo,
und wie bindet man diese Script in ein upload formular ein so das dieser Balken angezeigt wird wenn eine Datei gerade hochgeladen wird.
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 😉
Kann man es irgendwir verändern das auch eine % Anzeige kommt.
Antwort per email wäre nett =)
MfG
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*
extrem coole klasse. sowas hat ich schon immer gesucht. habs direkt verwendet in meinem projekt. thx für die arbeit!!
Es muss doch irgendwie möglich sein den Balken so zu programmieren das wenn 100% erreicht wurde, „Erfolgreich“ daneben steht ?!
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
@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.
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.
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.
Hallo ist es irgendwie möglich den balken nur bis einen bestimmten Prozentsatz laden zu lassen??
Schau dir das Beispiel an:
https://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%
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
Die Klasse ist echt toll. Klappt super.
Werde diese auf jeden fall gut gebrauchen können! 🙂
Vielen Dank für die Arbeit.
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
@ 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
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.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
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 😉 )
„Einfach Klasse diese Klasse“
Danke dafür!
Stefan
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
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
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.
Edit: Ups* Ich habe etwas übersehen 🙂 Nun klappt alles!
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.
Fabi,
ich habe alles versucht, der Balken wird erst angezeigt nachdem der Script fertig ist und bleibt weiß. Woran kann das liegen.
Gruß
Lokal mit xampp funktioniert es noch, online dann nicht mehr.
Es hat wohl mit dem Pufferverhalten des Browsers zu tun.
siehe auch: http://php.net/manual/de/function.flush.php
aber bei mir funktionieren alle php-Output-Control-Funktionen auch nicht, alle Browser warten bis Scriptende bis etwas gesendet wird….hmmm
Ich hab keine Lösung gefunden bis jetzt …