PHP-CLI 多行进度条
Posted Technofiend
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP-CLI 多行进度条相关的知识,希望对你有一定的参考价值。
我们使用php运行任务的时候,通常需要查看进度。要是能有一个像下载进度条一样直观的图就更好了。于是我做了一个。
<?php
/**
* ______ __ ____ __
* /_ __/__ ____/ / ___ ___ / _(_)__ ___ ___/ /
* / / / -_) __/ _ \\/ _ \\/ _ \\/ _/ / -_) _ \\/ _ /
* /_/ \\__/\\__/_//_/_//_/\\___/_//_/\\__/_//_/\\_,_/
* ___ ___ ___ _______ ______________________
* |_ ||_ |( _ < / __// __< < / __< / ___ \\___ ____ _ _______ __ _
* / __// __// _ / /__ \\/__ \\/ // /__ \\/ / / _ `/ _ `/ _ `// __/ _ \\/ ' \\
* /____/____/\\___/_/____/____/_//_/____/_/\\ \\_,_/\\_, /\\_, (_)__/\\___/_/_/_/
* \\___/ /_/ /_/
* 作者:Technofiend <2281551151@qq.com>
* 多进度条输出
*/
ini_set('max_execution_time', '0');
$percentStatus = [];
// 组合成进度条
function buildLine($percent)
$repeatTimes = 100;
if ($percent > 0)
$hasColor = str_repeat('■', $percent);
else
$hasColor = '';
if ($repeatTimes - $percent > 0)
$noColor = str_repeat(' ', $repeatTimes - $percent);
else
$noColor = '';
$buffer = sprintf("[$hasColor$noColor]");
if ($percent !== 100)
$percentString = sprintf("[ %-6s]", $percent . '%');
else
$percentString = sprintf("[ %-5s]", 'OK');;
return $percentString . $buffer . "\\r";
// 输出进度条
function outputProgress($clear = false)
global $percentStatus;
if ($clear)
$number = count($percentStatus);
for ($i=0; $i < $number; $i++)
system("tput cuu1");
system("tput el");
foreach ($percentStatus as $value)
echo buildLine($value) . "\\n";
// 更新进度条值
function updateProgressValue($k, $value)
$percentStatus[$k] = $value;
if ($percentStatus[$k] >= 100)
$percentStatus[$k] = 100;
outputProgress(true);
return;
outputProgress(true);
usleep(50000);
$percentStatus[0] = 0;
$percentStatus[1] = 0;
$percentStatus[2] = 0;
$percentStatus[3] = 0;
$percentStatus[4] = 0;
$percentStatus[5] = 0;
$percentStatus[6] = 0;
$percentStatus[7] = 0;
$percentStatus[8] = 0;
outputProgress();
while(1)
$percentStatus[0] = rand(0, 100);
$percentStatus[1] = rand(0, 100);
$percentStatus[2] = rand(0, 100);
$percentStatus[3] = rand(0, 100);
$percentStatus[4] = rand(0, 100);
$percentStatus[5] = rand(0, 100);
$percentStatus[6] = rand(0, 100);
$percentStatus[7] = rand(0, 100);
$percentStatus[8] = rand(0, 100);
outputProgress(true);
usleep(500000);
大家可以复制上面代码,保存成为run.php
然后在linux下 运行 php run.php
以上是关于PHP-CLI 多行进度条的主要内容,如果未能解决你的问题,请参考以下文章
python 使用ANSI控制符实现多行进度条“\ 033 [r; cH”参考:https://www.student.cs.uwaterloo.ca/~cs452/terminal.html缺点:运
请问进度条上方带有文字进度、并且跟随进度条移动的进度条该怎么实现?