Ti propongo una soluzione molto contorta.....da adattare.
L'idea è di eseguire una parte dell'aggiornamento di aprire un popup trasmettando i parametri dell'aggiornamento e in ritorno di usare quei parametri per proseguire l'aggiornamento.
codice:
<?
if (! isset($_GET['stop'])) {
if (isset($_GET['count'])) {
$count = $_GET['count'] + 1;
} else {
$count = 1;
} // if (isset($_GET['count'])
if (isset($_GET['max'])) {
$max = $_GET['max'];
} else {
$max = 100;
} // if (isset($_GET['max'])
$percent = $max%100;?>
<script language="JavaScript" type="text/javascript">
<!--
var wnd_parms2 = "height=200, width=200, menubar=no, toolbar=no,resizable=no,scrollbars=no";
//-->
</script><?
//---------- Qui il loop per il trattamento
for ($i=$count;$i<=$max;$i++) {
//------------ Ogni 10 aggiorno il popup
if ($i%10 == 0) { ?>
<script language="JavaScript" type="text/javascript">
<!--
window.open("test949b.php?count=<? print $i ?>&max=<? print $max ?>","messageWindow3",wnd_parms2);
//-->
</script><?
} // if ($i%max == $percent)
//------ qui il trattamento
//
//
print "$i
";
} // for ($i=$count;$i<$max;$i++)?>
<script language="JavaScript" type="text/javascript">
<!--
window.open("test949b.php?stop=1","messageWindow3",wnd_parms2);
//-->
</script><?
} else {
exit;
} // ?>
File : test949b.php
codice:
<?
if (isset($_GET['count'])) {
$count = $_GET['count'];
} // if (isset($_GET['count'])
if (isset($_GET['max'])) {
$max = $_GET['max'];
} // if (isset($_GET['max'])?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="pragma" content="nocache">
<title>Untitled</title>
</head>
<body><?
if (! isset($_GET['stop'])) { ?>
Percentuale avanzamento :<? echo ($count/$max)*100 ?>
<script language="JavaScript" type="text/javascript">
<!--
window.opener.location = "test949.php?count=<? print $count ?>&max=<? print $max ?>"
//-->
</script><?
} else {?>
<script language="JavaScript" type="text/javascript">
<!--
window.close();
//-->
</script><?
} // if (! isset($_GET['stop'])) ?>
</body>
</html>