【PHP提前输出响应】
今天在做一个PHP的优化,有大量的数据处理,但是利用浏览器与客户间的响应时间差,完全可以提现输出想要的结果并响应给浏览器,然后继续处理数据。
1,nginx
echo 'success';
fastcgi_finish_request();
//此处已经输出success,并响应给了浏览器。
// 下方继续执行耗时代码.....注意下面即使有echo print_r也不会再输出了,但是还会执行
2,apache
ob_end_flush();
ob_start();
echo 'success';
header("Content-Type: text/html;charset=utf-8");
header("Connection: close");
header('Content-Length: '. ob_get_length());
ob_flush();
flush();
// 执行耗时代码.....
【php实时输出内容】
运行php,需要实时查看运行情况时就需要实时输出查看
<?
//header('Content-type:text/html;charset=utf-8');
#设置执行时间不限时
set_time_limit(0);
#清除并关闭缓冲,输出到浏览器之前使用这个函数。但是浏览器访问必然会有header信息,必须要清缓冲区
@ob_end_clean();
#控制隐式缓冲泻出,默认off,打开时,对每个 print/echo 或者输出命令的结果都发送到浏览器。强制php直接输出内容到浏览器,不加入缓冲区
ob_implicit_flush(1);
//关键是加了这一行。// 设置nginx或apache不缓冲,直接输出
header('X-Accel-Buffering: no');
//下方运行代码,代码段时间可用 sleep(1); 来暂停几秒,然后继续输出