【发布时间】:2019-12-04 15:29:34
【问题描述】:
我正在本地主机中运行一个 php 抓取脚本。
当用户填写表单并提交按钮时,它会将一些数据发布到 php 脚本(即 script.php)。 它在我的本地主机上运行正常,当 script.php 运行时,它会显示一些关于爬取的信息。
但是当我将它上传到服务器时,script.php 在处理时没有显示,只有在完成后才显示。 所以我在服务器上运行下面的代码,但也没有工作(它在本地主机上工作正常)。
<?php
header( 'Content-type: text/html; charset=utf-8' );
echo 'Begin ...<br />';
for( $i = 0 ; $i < 10 ; $i++ )
{
echo $i . '<br />';
flush();
ob_flush();
sleep(1);
}
echo 'End ...<br />';
?>
我添加了所有的flush方法,包括ob_implicit_flush(true);或ob_start(),但都一样。
我认为服务器有问题,但无法准确指出。
谁能帮帮我?
【问题讨论】:
-
HTTP 不支持部分响应。 Web 服务器必须始终获取整个输出并将其作为一个返回给客户端。使其异步工作将需要额外调用 Web 服务器以获取更新。
-
这能回答你的问题吗? Display output in parts in PHP
-
@Patrick Q 根据我的经验,大多数网络浏览器在得到完全响应之前不会开始渲染。因此,即使您强制 Web 服务器返回部分数据,Web 浏览器仍会等待其余部分。如果另一端有网络浏览器以外的其他东西,这将起作用。
-
@S3Mi “这能回答你的问题吗?”是将问题标记为重复时创建的新自动评论文本。我绝对讨厌这种变化,但这是另一个讨论。这个问题几乎是那个问题的重复,无论 OP 想要做什么实际上是否可以实现(并且链接问题中的答案指出了它的局限性/相对不可能)
-
[link]copyrighthousebooks.com/test4.php 这是此代码的 url,它在其他服务器上正常工作。是因为服务器设置错误吗?