用PHPExcel下载excel表格的时候,由于表格数据非常多,下载很慢。一点击下载,页面就一直转啊转,最后出现502错误,如下图。
php-fpm错误日志如下:
[13-Oct-2013 12:06:07] WARNING: [pool www] child 7458, script '/home/wwwroot/admin/index.php' (request: "GET /index.php") execution timed out (101.515909 sec), terminating [13-Oct-2013 12:06:07] WARNING: [pool www] child 7458 exited on signal 15 (SIGTERM) after 1130895.840878 seconds from start [13-Oct-2013 12:06:07] NOTICE: [pool www] child 24885 started
观察了下页面502的响应时长,发现每次都是30s过一点。猜测可能是服务器的配置文件设置了30s的超时时间,于是依次查找了nginx.conf,php-fpm.conf,php.ini(这三个文件原先使用默认配置)。发现nginx.conf里没有30s的配置,php-fpm.conf和php.ini里都有30s的配置。最后实验得出结论:只需要修改php-fpm.conf的request_terminate_timeout值就可以解决超时页面显示502的问题。