这有效,例如输出一个接一个地出现:
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
答案 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
标题)。