脚本执行时打印

问题描述 投票:0回答:1

我有这段代码:

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_命令接近,但没有一个工作。有任何想法吗?

php printing output
1个回答
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();
}
© www.soinside.com 2019 - 2024. All rights reserved.