2017-05-30 80 views
0

我有PHP腳本是這樣的:如何使PHP像作曲家/捲曲/ wget的CMD進步也

echo 'Loading...'.PHP_EOL; 
if($download_size > 0) 
     { 
      echo round($downloaded/$download_size * 100, 2) .'%'. PHP_EOL; 
     } 

這回

Loading ... 
0% 
0% 
0% 
0% 
0% 
0% 
0% 
0% 
0.01% 
0.01% 
0.01% 
0.01% 
0.01% 
0.01% 
0.01% 
0.01% 
0.01% 
0.01% 
0.01% 
0.01% 
0.01% 
0.01% 
0.01% 
0.01% 
0.01% 
--snippet-- 

當我們使用compoeser,下載進度會像這樣

githubUser/githubChannel 75%

wget的/捲曲/ apt-get會是這樣

file.ext [=======> ] 40%

如何在命令行模式下運行PHP這樣做呢?

我嘗試添加system('cls');回聲後卻無法正常工作

我想是這樣的

progress: 0%

後幾秒鐘

progress: 2%

後幾秒鐘

progress: 6%

後幾秒鐘

progress: 9%

感謝。

+0

不使用一個換行符,但回車:'回聲圓($下載/ $ DOWNLOAD_SIZE * 100,2)。 「%\ r」;' – JazZ

+0

你得到的錯誤是什麼?或者你目前卡在哪裏? – gaganshera

+0

@agaganshera只是不知道該怎麼做。但我在下面有正確的答案。感謝你的關注。我的榮幸 – plonknimbuzz

回答

1

您必須使用\r字符(回車)。當「寫入」終端時,指向要寫入的下一個字符的列的光標將被移至實際行的第一列。

一個完整的工作示例看起來像下面的代碼片段:

<?php 

$download_size = 100; 
$downloaded = 0; 

echo 'Loading...'.PHP_EOL; 
while ($downloaded < $download_size) { 
    if($download_size > 0) { 
     echo round(($downloaded/$download_size) * 100, 2) . "%\r"; 
     sleep(1); 
     $downloaded += 1; 
    } 
} 
+0

哇\ r'。從來不知道這個字符。之前。感謝兄弟,你救了我的一天 – plonknimbuzz