Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP实现流式打印_Php_Printing_Streaming_Echo_Buffered - Fatal编程技术网

用PHP实现流式打印

用PHP实现流式打印,php,printing,streaming,echo,buffered,Php,Printing,Streaming,Echo,Buffered,我编写了一个PHP脚本,它向搜索引擎发出请求,访问服务结果,从结果中提取一些细节,然后以更有用的形式打印出来 这一切都很好,但我意外地发现,在等待数据流传输时调用echo或print也会导致输出流传输。具体来说,有多页结果,因此我访问第一页,读入并重新打印内容,然后转到下一页,在等待下一页加载时,上一页的内容在浏览器中可见 我不明白的是为什么这种情况发生得如此不一致。有时在进入下一页之前只打印一页,有时打印得更少,有时打印得更多。然后,当我在阅读完每个结果所指向的页面后,做了基本相同的事情时,输

我编写了一个PHP脚本,它向搜索引擎发出请求,访问服务结果,从结果中提取一些细节,然后以更有用的形式打印出来

这一切都很好,但我意外地发现,在等待数据流传输时调用echo或print也会导致输出流传输。具体来说,有多页结果,因此我访问第一页,读入并重新打印内容,然后转到下一页,在等待下一页加载时,上一页的内容在浏览器中可见

我不明白的是为什么这种情况发生得如此不一致。有时在进入下一页之前只打印一页,有时打印得更少,有时打印得更多。然后,当我在阅读完每个结果所指向的页面后,做了基本相同的事情时,输出几乎没有流式传输,大约每分钟都被重新绘制一次


我使用file_get_contents$url来检索内容,并调用一个包含echo的函数来打印到目前为止加载的内容。这种流式打印行为是否是浏览器的一项功能,并且与我用PHP编写的内容无关?如果没有,如何更好地控制它?

最简单的修复方法是使用。基本思想是在脚本开头调用ob_start,然后在希望将页面内容发送到客户端时调用ob_end_flush。执行此操作将保存所有输出,直到您希望程序发送为止。

最简单的修复方法是使用。基本思想是在脚本开头调用ob_start,然后在希望将页面内容发送到客户端时调用ob_end_flush。这样做将保存所有输出,直到您希望您的程序发送为止。

谢谢,这似乎正是我想要的,但它仍然不能像预期的那样工作。我已经阅读了文档和评论,一开始就刷新了100次,每次有趣的打印后都会刷新ob_,但它仍然会以奇怪的间隔每13个结果打印一次,每页10个。块大小可能有问题吗?我在php.ini中将它设置为3个字节,因此应该已经修复了它。也许我应该重新启动服务器…你的算法有问题吗?否则,我不知道为什么它会每13次打印一次结果。也许你的网络服务器有点奇怪?啊,明白了。我不得不打电话给ob_flush;然后冲洗;我相信,按照这个顺序,不仅仅是一个或另一个,我每次都必须这样做。令人困惑的东西。不过现在效果很好,谢谢!谢谢,这看起来确实是我想要的,但它仍然没有像预期的那样有效。我已经阅读了文档和评论,一开始就刷新了100次,每次有趣的打印后都会刷新ob_,但它仍然会以奇怪的间隔每13个结果打印一次,每页10个。块大小可能有问题吗?我在php.ini中将它设置为3个字节,因此应该已经修复了它。也许我应该重新启动服务器…你的算法有问题吗?否则,我不知道为什么它会每13次打印一次结果。也许你的网络服务器有点奇怪?啊,明白了。我不得不打电话给ob_flush;然后冲洗;我相信,按照这个顺序,不仅仅是一个或另一个,我每次都必须这样做。令人困惑的东西。不过现在效果很好,谢谢!