gpt4 book ai didi

php - Apache/PHP 输出缓存

转载 作者:可可西里 更新时间:2023-11-01 13:00:34 26 4
gpt4 key购买 nike

我正在开发一个 PHP 脚本,它可以在事先不知道长度的情况下动态生成大量(多 MB)输出。我通过 fwrite() 直接写入 php://output 并尝试了标准输出和使用 Transfer-Encoding: chunked (编码根据需要的 block ),但无论我尝试什么,浏览器都会等到所有数据都被写入,然后才会显示下载对话框。我也尝试过 flush() 在 header 之后和每个 block 之后,但这也没有什么区别。

我猜测 Apache 正在缓存输出,因为浏览器通常会在从服务器接收到几 kB 后显示。

有没有人知道如何在生成数据时停止缓存并将数据刷新到浏览器?

谢谢,J

最佳答案

首先,就像 BlaM 在他的评论中提到的那样,如果在 PHP 配置中启用了 OutputBuffering,它将无法工作,因此了解您的 phpinfo() 会很有用。

下一步,尝试它是否适用于存储在您的网络服务器上的大文件,使用 readfile 输出它。并且,与此一起,检查您是否发送了正确的 header 。有关如何读取文件 () 和发送正确 header 的提示,此处提供:StackOverflow: How to force a file download in PHP

当你在做的时候,调用ob_end_flush()ob_end_clean()在脚本的顶部。

关于php - Apache/PHP 输出缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3475720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com