gpt4 book ai didi

php - 在 PHP 中禁用输出缓冲

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

我有一个任务对象,在 __deconstruct() 上,它意味着在页面的其余部分已经加载后运行一些较长的清理任务。不幸的是,它会缓冲输出,直到任务完成后才会发送输出(任务中没有打印任何内容)。

我已通读 http://www.php.net/flush并尝试了那里的所有建议。显然我已经尝试在 php.ini 中禁用 output_buffering。我禁用了 deflate_module,关闭了 zlib 压缩,没有 mod_gzip。调用 flush() 或 ob_flush() 无效,启用 implicit_flush 也无效。

我只是在 Windows Server 2008 R2 下运行 XAMPP(目前是 apache 2.2.17,php 5.3.4)。 PHP 作为模块运行。

是的,我可以设置一些 AJAX 小技巧来运行任务管理器,甚至可以设置计划任务来运行此特定任务,但输出缓冲在其他地方也是一个问题。只是希望它有时消失。

在类似的线程中,有人建议查看以下内容:

<?php
while (TRUE)
{
echo 'x';
flush();
sleep(1);
}
?>

正如预期的那样,页面在达到最大执行时间之前不显示任何内容,此时它会刷新缓冲区。

这变得非常令人沮丧。任何人都知道什么仍然可能导致它缓冲?

最佳答案

您只发送少量数据。浏览器有自己的缓冲区,它可以基于接收元素的字节数或其他内容。

简而言之,您对此无能为力。缓冲发生在客户端,而不是服务器端。您可以尝试在 x 之前发送更多数据。

您可以通过数据包嗅探服务器和浏览器之间的连接来证明这一点,使用 Wireshark或类似的。

关于php - 在 PHP 中禁用输出缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9727852/

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