有没有办法来禁止FastCGI读取超时? (fastcgi_read_timeout)
将其设置为零不起作用,只会导致立即超时。
我需要解决超时的原因是由于我们使用的系统生成报告的方式。 由于在PHP-FPM中分叉是不可能的(pctnl_fork()被禁用),报告处理在请求被发送后立即完成。 这会导致读取挂起,直到系统完成处理。
看起来你唯一的select是将fastcgi_read_timeout设置为一个非常大的值(如1h或1d)。
我将如何去解决这个问题:
当用户发送生成报告的请求时,使用exec("php report.php")以CLI模式运行报告生成脚本。 当然,使用一些可识别的信息作为aruuments。
为用户加载“Please Wait”页面,使用AJAX检查报告是否使用ps w完成。 查找使用的脚本名称和参数。
完成后,redirect到报告页面。
这样,如果等待时间过长(实际上使用时间更长),则会阻止用户进行混搭刷新,同时也通知用户该进程仍在运行。