PHP 任务页面或是 set_time_limit (0)时,Nginx访问PHP提示 An error occurred.
大家在使用时,经常可能会用 while 或是 foreach 数据太多时,出现 An error occurred 错误.
PHP 里开启实时输出方法是ob_implicit_flush(),
但它大部分情况下都不管用,
因为php.ini配置里output_buffering输出缓冲大部分是On开启的,
还有zlib.output_compression也经常会被开启,
除了 PHP 这一层,还有 Nginx 的缓冲设置proxy_buffering,和压缩gzip也大都是开启的。
为了一两个页面的需求,修改整个服务器的网站配置,恐怕没有人会做这种选择。
这里推荐一下简单的方法:
set_time_limit(0);
ob_end_clean();
ob_implicit_flush();
header('X-Accel-Buffering: no');