在Linux环境下跑PHP应用,遇到PHP-FPM超时问题几乎是绕不开的坎。脚本执行时间一长,服务器很可能直接给你甩一个502 Bad Gateway,这时候排查方向其实很明确——通常是执行时间超过了配置上限。那么,该怎么调整才能让服务“松一口气”?下面几个方法是经过反复验证的,按顺序操作基本都能解决。

调整PHP配置文件(php.ini)
最直接的方式是修改max_execution_time参数。找到该设置项,把值调大,比如改成300(单位秒)。如果文件里压根没有这个项,直接在末尾加一行max_execution_time = 300就行。改完之后记得重启PHP-FPM,让配置生效:sudo service php-fpm restart修改Nginx配置文件
如果你在用Nginx做反向袋里,光调PHP那边还不够——Nginx自己也有超时限制。需要在location ~ .php$块中增加两个关键参数:fas tcgi_read_timeout和fas tcgi_connect_timeout,同样设为300秒。配置示例如下:location ~ .php$ { ... fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; # 核心:把超时时间拉长 fastcgi_read_timeout 300s; fastcgi_connect_timeout 300s; }保存后重启Nginx:
sudo service nginx restart修改PHP-FPM配置文件(php-fpm.conf)
最后一步,检查PHP-FPM自身有没有设置“死刑线”。找到request_terminate_timeout,它的默认值通常是0(表示不限制),或者某个较小值。建议设为300秒,找不到就手动加上一行。同样需要重启PHP-FPM:sudo service php-fpm restart
需要说明的是,拉长超时时间是一把双刃剑:它能让任务顺利跑完,但也可能拖慢整体响应,增加服务器并发压力。所以,千万别无脑改到9999——先评估实际业务场景,再调一个合理的值。另外,如果某个脚本经常超时,不妨回过头检查代码逻辑,看是不是存在死循环、慢SQL或者IO阻塞,优化它才是治本之策。
