使用标头时,PHP输出回显为文本
我正在尝试用php、AJAX或任何与JS相关的东西来做一个加载条 它可以在加载时显示数字或文字使用标头时,PHP输出回显为文本,php,Php,我正在尝试用php、AJAX或任何与JS相关的东西来做一个加载条 它可以在加载时显示数字或文字 echo $text; echo str_pad('', 4096) . "\n"; ob_flush(); flush(); 但问题是它用简单的文本显示所有内容 因此,我无法通过echo向视图中添加任何CSS或HTML。 我加入这个标题是为了使flush工作,并在页面加载时实际更新页面 header('Content-Type: text/event-strea
echo $text;
echo str_pad('', 4096) . "\n";
ob_flush();
flush();
但问题是它用简单的文本显示所有内容
因此,我无法通过echo向视图中添加任何CSS或HTML。
我加入这个标题是为了使flush工作,并在页面加载时实际更新页面
header('Content-Type: text/event-stream');
您使用的标题实际上不会解析为HTML/CSS 实际上,您需要的是:
ob_implicit_flush( true );
然后通常像上面一样
ob_start();
while (true) {
echo "Something is going on!";
ob_flush();
flush();
}
我在大多数项目中都是这样做的。现在,如果这不起作用,您的web服务器中可能会有一些缓存。我多次提到这个问题。要避免这种情况,请执行以下操作:
header( 'X-Accel-Buffering: no' );
header( 'Content-Encoding: none' );
删除标题(“内容类型:文本/事件流”);使实时更新不起作用,即使在使用了您的代码之后。这很有趣,请问您使用的是什么web服务器/php模块?就像PHP作为模块、fpm还是fcgid运行一样?我试图在工作中实现这一点,我们在这里使用自定义一切编辑:我不知道我到底看到了什么。根据我的经验,上述方法总能解决问题。我曾经在apache中遇到过类似的问题,但唯一的修复方法是在.conf文件中添加“-flush”,其中设置了包装路径,例如:
FCGIWrapper“e:/Web/main/bin/engine.exe-flush-c./../config/engine.ini.php