2021-10-07

 

【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);  来暂停几秒,然后继续输出

 

 

打赏

好文章,更需要你的鼓励

本文由 氢设计 创作,除注明转载/出处外,均为本站原创,转载前请务必署名

最后编辑时间为:2021-11-23 10:21:01

本文链接:https://www.h2sheji.com/show-161.html