执行脚本时打印

时间:2019-04-01 13:30:52

标签: php printing output

我有以下代码段:

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_命令的各种方法,但是它们都不起作用。 有什么想法吗?

1 个答案:

答案 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();
}