Progress-Bar für langes PHP Skript

Ihr habt ein lang laufenden PHP-Skript und möchtet den Benutzer über den Fortschritt informieren. Das ist im Prinzip sehr einfach ein gibt nur ein paar Kleinigkeiten zu beachten die einem das leben schwer machen können.

Ich selber habe eine Anleitung im Netz gefunden die Funktioniert aber eine kleine Änderung in Scriptcase benötigt.

Die Anleitung findet Ihr hier –>http://w3shaman.com/article/php-progress-bar-script

Der andere auf dieser Seite mit der Ajax Progress-Bar habe ich zwar zum laufen gebracht, aber leider wird die Anzeige nicht aktualisiert, also wenn jemand das hinbekommt würde ich mich über eine Info freuen.

So nur zu den Änderungen: Ihr könnt den Code fast komplett übernehmen.

Ihr müsst natürlich euer eigenes Skript laufen lassen.

In Scriptcase benötigen wir die HTML-Tags Head und Body nicht, alles durchgestrichene kann weg, das Fett gemachte muss hinzugefügt werden oder sind Kommentare.

<?php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
    <title>Progress Bar</title>
</head>
<body>

!!!Hier die str_repeat hin und dann unten nur noch die Variable einsetzen.
$buffer_str = str_repeat(' ',1024*64); 
?> sc_include_lib("Jquery"); <!-- Progress bar holder --> <div id="progress" style="width:500px;border:1px solid #ccc;"></div> <!-- Progress information --> <div id="information" style="width"></div> <?php
//Hier könnt Ihr dann euer Skript einfügen // Total processes $total = 10;// Loop through process for($i=1; $i<=$total; $i++)
{     // Calculate the percentation     $percent = intval($i/$total * 100)."%";          // Javascript for updating the progress bar and information     echo '<script language="javascript">     document.getElementById("progress").innerHTML="<div style=\"width:'.$percent.';background-color:#ddd;\">&nbsp;</div>";     document.getElementById("information").innerHTML="'.$i.' row(s) processed.";     </script>';   
 
// This is for the buffer achieve the minimum size in order to flush data
!!!!!!!!!!Ganz wichtig diese Anzahl an Leerzeichen kann bei eurem Werbserver unterschiedlich sein, bei mir ist es 1024*4096
!!!!!!!!!!Wenn die Progrssbar nicht angezeigt wird, oder erst nach einer gewissen Zeit dann müsst Ihr diese Zahl erhöhen
!!!!Das liegt am Buffering
!!!!!Ebenfalls solltet Ihr dies ganz nach oben schreiben damit nicht bei jedem Durchlauf die Funktion str_repeat aufgerufen wird
    echo str_repeat(' ',1024*64);    // Send output to browser immediately     flush();   

// Sleep one second so we can see the delay     sleep(1);//Sollte dann bei euch raus }
// Tell user that the process is completed echo '<script language="javascript">document.getElementById("information").innerHTML="Process completed"</script>';
?> </body> </html> ?>

Schreibe einen Kommentar