Originariamente inviato da daniele_dll
si devi usare flush
cmq ti consiglio di fare una cosa un po più pulita...ovvero di fare una cosa tipo questa...
Inserisci un div nell'html e dopo di che via javascript accedi al div ed imposti del testo...tipo
100 email di 35000 inviate, percentuale: 35.67%
inoltre ti conviene aggiornare una volta ogni 5 secondi, per evitare di far impazzire tutto
magari, anche meno, però fai dei tests
codice:
<?php
.
.
.
$conta = mysql_num_rows($getemail);
$tmpINT_NumberOfEmailSended = 0;
$tmpINT_NextSend = 0;
echo <<< EOF_HTML
<div id="progressMeter">
0 emails inviate di {$conta} - Percentuale: 0%
</div>
<script type="text/javascript">
function getElement(obj) {
var element;
if(document.all)
element = document.all[obj];
else
element = document.getElementById(obj);
return element;
}
var obj = getElement('progressMeter');
</script>
EOF_HTML;
while($data=mysql_fetch_array($getemail)) {
$tmpINT_NumberOfEmailSended++;
if (time() > $tmpINT_NextSend) {
$tmpFLT_Perc = sprintf('%01.2f', (float) ((float) $tmpINT_NumberOfEmailSended) / ((float) $conta) * 100);
echo <<< EOF_JS
<script type="text/javascript">
obj.innerHTML = "{$tmpINT_NumberOfEmailSended} emails inviate di {$conta} - Percentuale: {$tmpFLT_Perc}%";
</script>
EOF_JS;
flush();
$tmpINT_NextSend = time() + 1;
}
.
.
.
}
echo <<< EOF_JS
<script type="text/javascript">
obj.innerHTML = "Sono state inviate tutte le {$tmpINT_NumberOfEmailSended} emails.";
</script>
EOF_JS;
flush();
.
.
.
?>
PS: se usi la gestione del output buffer non va bene flush
PS2: verifica se non rimbecillisce tutto per i troppi dati
PS3: non ti assicuro che su IE funzioni, perché se non ha finito di caricare la pagina potrebbe dare qualche rognetta, almeno a me le ha date, anche se in ambiti abbastanza diversi
il codice non l'ho minimamente provato, quindi se hai errori posta che si risolvono ^^
---
edit, l'ho provato...e va una meraviglia
se vuoi perderci un po di tempo, con pochissimo lavoro lo puoi personalizzare, metterci anche una progress bar stile cacca winzoz e mettere, sempre in tempo reale, il numero di email inviate con successo e le email di cui è fallito l'invio
---
potresti anche mettere il numero di invii al secondo... 6.15 invii al secondo o qualcosa del genere