我有一个通过CLI运行的PHP脚本运行良好,但它会运行几个长查询(2-5分钟),理想情况下会让您知道某些事情仍在发生。在迭代结果时,我确实有一个正在运行的函数来更新进度,但是当PHP等待查询返回时,就会出现静默。
...
或其他东西)。可能的?
答案 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));
}
}