前提:由于业务需求,需要将大量的用户数据以PDF文件格式导出。在完成功能开发之后,实际导出一定量的用户数据时,程序都能很稳定的正常导出。但是超过一定量时,就会报404,然后再无任何信息提示。
既然有错,那就得解决,于是本地开启debug模式,一步步的排查,刚开始以为是执行时间超时,或者内存溢出,发现都没有问题。于是开始看apache 错误日志,发现返回错误信息是:End of script output before headers: index.php 。于是各种查找资料,百度,CSDN,简书,知乎,中国PHP社交平台......甚至翻墙,googel 搜索,反正能想到的技术论坛都去求助,查看。然鹅并无卵用。一遍遍的猜测,尝试直到搞的脑仁都异常的疼痛,还是未解决。
在最终想要放弃时,想着改下apache 日志级别,看看是不是还有别的错误。(此前的日志级别是error,然后调整成warn级别)再次运行程序,查看日志,果然,有一条不一样的错误信息:mod_fcgid: read timeout from pipe ,于是抱着试试解决此问题的态度试试,在httpd.conf 文件加入如下一段代码:
<IfModule fcgid_module>
FcgidIOTimeout 1200
FcgidConnectTimeout 1200
FcgidBusyScanInterval 1200
FcgidBusyTimeout 1200
FcgidErrorScanInterval 1200
FcgidIdleScanInterval 1200
FcgidIdleTimeout 1200
FcgidProcessLifeTime 3600
FcgidZombieScanInterval 1200
</IfModule>
然后保存,重启服务,再次运行,程序执行成功,并且成功导出。(此时心里觉得是侥幸成功,因为此前也有类似的事情发生),于是不断变换导出条件,多次测试均可成功导出。这时别提心里有多高兴了。问题终于解决了。