【发布时间】:2018-09-01 13:31:49
【问题描述】:
我试图在 PHP 中的 foreach 循环的每次迭代后回显。回声在全部完成之前不会渲染。我已经尝试了各种帖子的建议,但没有一个有效。我的一些代码是:
echo $epTitle . "<br>";
echo "<div>" . '<img src="' . $imgSrc . '" height="70" width="70">';
echo "<button onclick='grabVid(" . '"' . $pageUrl . '"' ..")'>Grab</button>";
我尝试了以下方法:
flush();
.
flush();
ob_flush();
.
while (ob_get_level() > 0)
ob_end_flush();
.
@ini_set('zlib.output_compression', 0);
@ini_set('implicit_flush', 1);
@ob_end_clean();
以及其他来自: http://php.net/manual/en/function.flush.php 和 Echo 'string' while every long loop iteration (flush() not working)
有什么建议吗?谢谢。
【问题讨论】:
-
我成功完成此任务的唯一方法是使用 Ajax 请求。否则 PHP 脚本将处理所有内容,然后将输出发回。
-
@MarkSkayff 我正在使用 Ajax 发布方法,该方法发布到上述脚本。每次迭代后它仍然没有回显。
-
因为 HTTP 通常不是这样工作的。 Web 服务器先发送标头,然后再发送响应正文。在请求完成之前不会发送任何内容,因此会发送正确的标头(HTTP 状态代码、内容类型、内容长度)。