我有一个通过CLI运行的PHP脚本,运行良好,但它运行了几个长的查询(2-5分钟),理想情况下会给你一些想法,即仍在发生某些事情。在遍历结果时,我确实有一个运行的函数来更新进度,但是当PHP正在等待查询返回时,就会发生沉默。在查询运行时在CLI上显示一个指示灯
我并不需要知道任何有关当查询将完成,但某种指示的CLI,它的做的事情将是一个巨大的增益(binking ...
,或东西)。可能?
我有一个通过CLI运行的PHP脚本,运行良好,但它运行了几个长的查询(2-5分钟),理想情况下会给你一些想法,即仍在发生某些事情。在遍历结果时,我确实有一个运行的函数来更新进度,但是当PHP正在等待查询返回时,就会发生沉默。在查询运行时在CLI上显示一个指示灯
我并不需要知道任何有关当查询将完成,但某种指示的CLI,它的做的事情将是一个巨大的增益(binking ...
,或东西)。可能?
我发现使用回车\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));
}
}
我有类似的东西,当有一个迭代,但如果有一行代码关闭了几分钟的查询运行,有没有办法表明它很忙? – Chords
@Chords - 除非你可以将单行代码分解成更小的代码块。 –
是具有“这可能需要5分钟以上”打印出来真不够用?价值如何被返还?你有多个线程或某种事件循环? –
Q1。这足够了。仍然希望看到我的问题的答案。 Q2。查询的结果被插入到不同的表中。 Q3。不,单线程。 – Chords