2014-10-11 2 views
0

У меня есть таблица 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(); 

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

+0

этот код не работает для меня ?! показывать сообщения, когда процесс завершен !? – ashkufaraz

+0

при использовании сна (1) этот код работал – ashkufaraz

Смежные вопросы