2017-05-30 161 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