показывать индикатор выполнения во время обновления базы данных

У меня есть стол ArsehBaigany с 10000000 записей,
и я хочу обновить все записи ArsehBaigany,

PHP-код:

     $ArsehBaiganyRows=$dbHandle ->query("select from ArsehBaigany where code like '2'");
echo "<br>Start...<br/>";
$i=1;
foreach($ArsehBaiganyRows as $ArsehBaiganyRow)
{

$query="update ArsehBaigany
set Daste='183837732828',Noe='33992928487839002'
where
Code='".$ArsehBaiganyRow["code"]."' ";

$update=$dbHandle->query($query);
if(empty($update))
{
echo "<span style='color:red'>error".$i++."</span><br>".$query;
}
else
echo "ok";

//rename file

$fromFile= trim($ArsehBaiganyRow["ext"])    ;
$toFile=trim($uploadDir)    ;
if(file_exists($fromFile) )
{
$renname= rename($fromFile, $toFile) ;
if($renname)
{
echo "ok ";
}
else
echo "<span style='color:red'>error</span>";

}

echo "<br/>next file<br/>";

flush();
}

echo "<br>finish<br/>";

Когда скрипт завершится, браузер автоматически закроется.
Зачем echo не работает ? и видно только когда скрипт закончится?

Я хочу показать ошибку в режиме реального времени.
и как можно добавить к нему индикатор выполнения?

0

Решение

$ArsehBaiganyRows=$dbHandle ->query("select from ArsehBaigany where code like '2'");

if (ob_get_level() == 0)
ob_start();

echo "<br>Start...<br/>";
echo str_pad('', 4096);
ob_flush();
flush();
$i=1;
foreach($ArsehBaiganyRows as $ArsehBaiganyRow)
{

$query="update ArsehBaigany
set Daste='183837732828',Noe='33992928487839002'
where
Code='".$ArsehBaiganyRow["code"]."' ";

$update=$dbHandle->query($query);
if(empty($update))
{
echo "<span style='color:red'>error".$i++."</span><br>".$query;
echo str_pad('', 4096);
ob_flush();
flush();
}
else
{
echo "ok";
echo str_pad('', 4096);
ob_flush();
flush();
}

//rename file

$fromFile= trim($ArsehBaiganyRow["ext"])    ;
$toFile=trim($uploadDir)    ;
if(file_exists($fromFile) )
{
$renname= rename($fromFile, $toFile) ;
if($renname)
{
echo "ok ";
echo str_pad('', 4096);
ob_flush();
flush();
}
else
{
echo "<span style='color:red'>error</span>";
echo str_pad('', 4096);
ob_flush();
flush();
}

}

echo "<br/>next file<br/>";
echo str_pad('', 4096);
ob_flush();
flush();
}

echo "<br>finish<br/>";
ob_end_flush();

Для индикатора выполнения вам нужно использовать javascript, потому что, насколько я знаю, вы не можете переписать эхо-сообщение в браузер.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]