2016-03-08 52 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/0exec()返回void。 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