2016-03-08 4 views
0

Я использую цикл while для вывода «.». в то время как скрипт на стороне сервера работает с помощью exec. Это значительно отличается от того факта, что он никогда не прекращает работу, т. Е. «........» будет продолжать строить до бесконечности!Пока монитор не останавливается (php)

Кто-нибудь знает способ сделать это на стороне клиента обновления после его завершения работы:

$dbupdate = ($siteurl."/data_update.php"); 

$runupdate = exec("nohup curl ".$dbupdate." > /dev/null 2>&1 & echo $!"); 

while(exec("ps $runupdate")) 
{ 
    echo(" . "); 
     ob_flush(); flush(); 
} 

ответ

0

Это потому, что while() будет продолжать выполнение, пока условие не является false/null/0 и exec() возвращает ничтожным. DOCS: http://php.net/manual/en/function.exec.php

Что-то вроде этого может помочь?

$runupdate = exec("nohup curl ".$dbupdate." > /dev/null 2>&1 & echo $!"); 
// Spitballing here... 
$pid = true; 
// Execute only while $op is strictly true, and not the PID that `echo $!` returns 
while($pid === true) 
{ 
    exec("ps $runupdate", $pid); 
    echo(" . "); 
    ob_flush(); flush(); 
} 

Заканчивать Документы здесь: http://php.net/manual/en/function.exec.php#88704

+0

Как следует '$ pid' когда-либо изменится на значение, отличное от' true'? – maxhb

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