我有以下代码段:
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_
命令的各种方法,但是它们都不起作用。
有什么想法吗?
答案 0 :(得分:2)
在每行打印之后,您必须放入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();
}