在我的控制台脚本中,我使用My own ProgressBar class来显示批处理过程的进度。今天,有以下代码:
$progressBar = new CliProgressBar(count($this->contracts));
foreach ($this->contracts as $contract) {
echo $progressBar->drawCurrentProgress();
try{
$this->handleSingleContract($contract);
} catch (Exception $ex) {
$this->ungeneratedContracts[] = $contract;
}
}
发生了一件奇怪的事。当循环命中Exception
时,它被捕获,循环继续运行,但输出被冻结直到脚本结束(然后它会使屏幕上出现大量不应缓冲的缓冲数据,但在它们到达时显示)。如何避免这种行为?在捕获异常后我可以以某种方式清理缓冲区以使我的输出再次工作吗?