Ladebalken für PHP-Script

ahykes

Erfahrenes Mitglied
Hallo. Ich habe ein PHP-Script, ziemlich lange läuft - is halt so - und das führt schnell zu Unsicherheiten : Läuft er noch oder abgeschmiert.

Kann man für so ein langes Script nicht einen Ladebalken machen, der Anzeigt wie weit das Script geladen ist?
 
Ich denke eher nicht.
Man kann ja nicht mit PHP einfach so in den Browser malen.

PHP:
<?php
ob_start();
echo "Bla";
ob_flush();
sleep(5);
echo "Blubb";
ob_end_flush();
?>

Ich denke dieses Script reicht aus um zu zeigen, dass es nicht gehen kann.
 
Zuletzt bearbeitet:
Okay...dann lass ich einfach so lange die Schleife läuft einen Text oder so ausgeben.... :p

Schade..aber Du hast schon recht...malen ist nicht gerade die Stärke von PHP :-)
 
Du kannst auch keinen Text ausgeben waehrend die Schleife laueft.

Nach dem Motto:
PHP:
for ($x=0;$x<$ganzganzganzviel;$x++)
 {
  echo '.';
  //machwas
 }
oder
PHP:
echo 'Bitte warten...';
for ($x=0;$x<$ganzganzganzviel;$x++)
 {
  //machwas
 }

Probier mal das kleine Beispiel oben aus.
Theoretisch sollte das Bla schreiben und nach 5 Sekunden Blubb anhaengen.
So einfach ist das aber nicht, denn erst wenn alles an den Browser geschickt wurde gibt der auch aus.
 
Ich habe mir bereits anders geholfen und das Script ein wenig optimiert. Warten ist im Inet eh doof! :p
 
reptiler hat gesagt.:
Theoretisch sollte das Bla schreiben und nach 5 Sekunden Blubb anhaengen.
So einfach ist das aber nicht, denn erst wenn alles an den Browser geschickt wurde gibt der auch aus.
Das kann man so pauschal nicht sagen. Mein Firefox gibt auch bspw. auch Teilinhalte aus.
 
Da muss ich Matthias recht geben.

Allerdings hatte ich schon mal irgendwo vor ferner Zukunft einen Fortschrittsbalken im Forum bekommen.
Allerdings weiss ich nicht mehr unter welcher Rubrik. Wer also langeweile hat kann ja ma suchen. Ich hab dort aufjedenfall das Thema erstellt!

Alternativ kannste aber alle Abfragen die das Skript aufeinmal macht splitten in 10%ige Blöcke.
Sprich es werden nicht von deinen X aktionen alle ausgeführt, sondern nur ein Zehntel. Dann wird ein Ergebnis an den Browser gesandt. Anschließend wird es erneut aufgerufen und es wird das zweite Zehntel begonnen und das Ergebnis an den Browser gesandt usf.

So hätteste aufjeden fall einen funzenden Ansatz!?

MfG Basti
 
Matthias Reitinger hat gesagt.:
Das kann man so pauschal nicht sagen. Mein Firefox gibt auch bspw. auch Teilinhalte aus.
Also ich hab mein oben gepostetes Script mit Mozilla und Konqueror getestet, und beide warten bis zum Schluss.

Und es ist ja auch nicht gerade Sinn der Sache im Web etwas zu coden was nur mit einem Browser laeuft.
 
Auch der Internet Explorer macht solche Sachen mit. Und es ging nicht darum, ob es Sinn macht oder nicht, sondern dass nicht jeder Browser mit dem Rendering wartet, bis die komplette Seite geladen wurde.
 
Zurück