查询运行时在CLI上显示指示符

时间:2014-05-19 15:44:10

标签: php command-line-interface

我有一个通过CLI运行的PHP脚本运行良好,但它会运行几个长查询(2-5分钟),理想情况下会让您知道某些事情仍在发生。在迭代结果时,我确实有一个正在运行的函数来更新进度,但是当PHP等待查询返回时,就会出现静默。

...或其他东西)。可能的?

1 个答案:

答案 0 :(得分:1)

我发现使用回车\r没有新行非常有帮助。它们将输出重置为行的开头,但不要向下移动一行,允许您覆盖当前文本。

请注意,您需要将线条填充到全长,否则之前的字符仍然会停留。例如:

$iteration = 0;
while (/* wait condition */) {
    printf("Process still running%-5s\r", str_repeat('.', $iteration % 5));
    sleep(1);
    $iteration++;
}
echo "\n";
echo "Task completed!";

如果你使用for循环进行处理,那么这样的东西会更有用:

// Display progress every X iterations
$update_interval = 1000000;

for ($i = 0; $i < $massive_number; $i++) {
    // Do processing

    if ($i % $update_interval == 0) {
        printf("Progress: %.2f%%\r", (100 * $i / $massive_number));
    }
}