首页 > 解决方案 > PHP 7.1 刷新根本不起作用

问题描述

我需要在脚本运行期间刷新内容。听起来很简单,但有几个关于这个问题的讨论。我已经尝试了所有能找到的东西,所以我认为服务器一定有问题。也许有些糟糕的配置。如果您告诉我要查找的内容,我可以更改服务器配置。

到目前为止,我检查了 output_buffering(512)、output_handler(无值)、zlib.output_compression(关闭)、zlib.output_handler(无值)。服务器运行普通的 Apache,没有 fast-cgi 左右。

无论刷新字符串的大小是多少,在脚本完成之前它什么都不做——然后所有东西都一起渲染。

我发布了我的最终代码示例,但我已经尝试了我在网上找到的每个代码示例。

// Turn off apache-level compression
@apache_setenv('no-gzip', 1);

// Turn off compression
@ini_set('zlib.output_compression', 0);

session_write_close();

while (ob_get_level()) ob_end_flush();

header( 'Content-type: text/html; charset=utf-8' );
header('Cache-Control: no-cache, must-revalidate');
header("Content-Encoding: identity", true);

for ($i = 0; $i < 10; $i++){

    ob_start(null,4096,PHP_OUTPUT_HANDLER_FLUSHABLE);
    echo "$i";
    echo str_repeat(' ',4096);
    usleep(250000);
    ob_end_flush();
    flush();

}

我开始使用 cakephp 3.5 操作,但是当我无法让它工作时,我将代码提取到单独的 .php 文件中,并且我正在直接访问该文件。网络控制表明这不是浏览器缓存的问题。

谢谢你的每一个提示。

编辑: 经过数小时的工作,我发现这是一个防病毒问题。而且由于现在几乎所有防病毒软件都会检查 Web 内容,即使使用 SSL,我想也无法保证将部分/分块内容传递给用户。

标签: phpflushphp-7.1

解决方案


推荐阅读