wp-load.php禁用ob_flush正常工作

时间:2016-06-19 23:34:20

标签: php wordpress

这有效,例如输出一个接一个地出现:

header( 'Content-type: text/html; charset=utf-8' );
for($i=0;$i<3;$i++)
{
  echo 'printing...<br>';
  ob_flush();
  flush();
  sleep(1);
}
die("bb");

这不起作用:

require_once(  __DIR__ .'/../../../wp-load.php' );
    header( 'Content-type: text/html; charset=utf-8' );
    for($i=0;$i<3;$i++)
    {
      echo 'printing...<br>';
      ob_flush();
      flush();
      sleep(1);
    }
    die("bb");

e.g。脚本停止,等待所有数据完成。

这是一个多站点安装和本地安装。

修改

输出刷新工作的响应标头:

Connection:Keep-Alive
Content-Type:text/html; charset=utf-8
Date:Mon, 20 Jun 2016 01:33:33 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.4.7 (Ubuntu)
Transfer-Encoding:chunked
X-Powered-By:PHP/5.6.22-1+donate.sury.org~trusty+1

她是我的反应标题来自失败的尝试:

Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:Keep-Alive
Content-Type:text/html; charset=utf-8
Date:Mon, 20 Jun 2016 01:27:36 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=5, max=100
Pragma:no-cache
Server:Apache/2.4.7 (Ubuntu)
Transfer-Encoding:chunked
X-Powered-By:PHP/5.6.22-1+donate.sury.org~trusty+1

2 个答案:

答案 0 :(得分:1)

这对我有用(在应用所有禁用gzip和禁用压缩教程之后):

请注意: ob_end_flush();

require(__DIR__ ."/../../wp-load.php");


ob_end_flush();


//header( 'Content-type: text/html; charset=utf-8' ); //this was not required in my case
for($i=0;$i<3;$i++)
{
  echo 'printing...<br>';
  ob_flush();
  flush();
  sleep(1);
}
die("bb2");

答案 1 :(得分:0)

我不确定你的WP安装的配置是什么,但可能是由于应用程序(php)或你的服务器(apache?)完成的缓冲。

某些配置可能导致输出在被发送回用户之前被压缩(主要是gzip),因此您的应用程序必须先完成所有输出才能被压缩。

如果在每个请求中压缩了输出,您可以检查(使用开发者工具)(您应该检查Content-Encoding标题)。