Das ganze sieht so aus:
Dumemrweise wird in dieser Schleife nichtmal ein ein "echo" ausgegeben,PHP-Code:
while($res2 = sql_fetch_assoc($sql2)) {
/* ca 2000 Datensätze verarbeiten */
Anzeige für Admin, was und ob überhaupt etwas getan wird
}
eine möglichkeit:
so würde nach jedem verarbeiteten datensatz ein punkt erscheinen, und am ende fertig.PHP-Code:
while($res2 = sql_fetch_assoc($sql2)) {
/* ca 2000 Datensätze verarbeiten */
Anzeige für Admin, was und ob überhaupt etwas getan wird
echo '.';
flush(); //sendet den ausgabe puffer
}
echo 'fertig';
wobei diese option nur auf ca. 40% aller syteme/server funzt, da zum teil der server weiter "puffert", also doch alles erst ausgibt, wenn fertig gearbeitet, oder dein browser weiterpuffert, also auch alle punkte auf einmal erscheinen und nicht nacheinander.
aber einen test ist es ja wert.
die bessere methode wäre, den der while schleife vorausgehenden query per limit abzugrenzen, und dann eben per GET varaibel und einem javascript die limits immer höher setzen.
Kill one man, and you are a murderer.
Kill millions of men, and you are a conqueror.
Kill them all, and you are a god. - Jean Rostand, Thoughts of a Biologist (1939)
So hatte ich es ja auch gehabt, dummerweise konnte ich mit flush(); alleine kein Erfolg erzielen, nur mit :
flush();
ob_flush();
wurde das Ergebniss direkt ausgegeben. Die Daten, die ausgegeben werden sollten, stehen direkt vor dem flush();
So sieht es aus (bei einem JS-Noob ) :
im Firefox läuft das Hochzählen für en 1. Durchgang perfekt, allerdings wird für den 2. Durchgang ein neuer DIV unter dem 1. gemacht und der Zähler läuft im 1. DIV wieder hoch, nicht im 2. :/PHP-Code:
// blabla
echo '<div align="center"><div id="versand">Es werden <strong>' . $res4a . '</strong> Paidmails der Kampagne <strong>' . $k_name . '</strong> verschickt.<br /><br />';
ob_flush();
flush();
// blabla
?>
<script type="text/javascript">
var count = 0;
</script>
<?PHP
while($res4 = sql_fetch_assoc($sql4)) {
extract($res4);
extract($res21);
?>
<script type="text/javascript">
count++;
zahl.innerHTML = count;
</script>
<?PHP
echo '<div id="zahl" style="font-size:14px; font-weight:bold;"></div>';
ob_flush();
flush();
// blabla
}
echo '</div></div>';
ob_flush();
flush();