我有这段代码:
foreach ($data as $key => $value) {
$result = $this->_restFetch($value);
$mode[$key] = $result[0]->extract;
}
只是一些在for
循环中运行的基本代码,向某些API发送请求。完成脚本需要一些时间,所以我想在脚本执行时向用户输出一些文本,如下所示:
foreach ($data as $key => $value) {
print "Started importing $value \r\n";
$result = $this->_restFetch($value);
$mode[$key] = $result[0]->extract;
print "Finished importing $value \r\n";
}
我尝试了各种与ob_
命令接近,但没有一个工作。有任何想法吗?
在每个打印行之后,您必须放置flush(),因此内容将立即打印出来。请记住,浏览器需要显示一些最小数据(约.5Kb)。我已经把ob_flush()和flush()都放了,因为这样你就可以确保显示输出了。有关flush()和ob_flush()的更多信息,请参阅本主题PHP buffer ob_flush() vs. flush()。
usleep函数可用于延迟执行代码以进行调试。
foreach ($data as $key => $value) {
print "Started importing $value \r\n";
usleep(3600); // if you are debugging, otherwise just comment this part
ob_flush();
flush();
$result = $this->_restFetch($value);
$mode[$key] = $result[0]->extract;
print "Finished importing $value \r\n";
usleep(3600); // if you are debugging, otherwise just comment this part
ob_flush();
flush();
}