php执行时间需协同调整max_execution_time、web服务器(nginx/apache)超时、php-fpm的request_terminate_timeout及代码中set_time_limit,仅改php.ini常无效。

PHP执行时间参数主要靠 max_execution_time 控制,但它不是唯一环节。只改这一个值,常出现“明明设了300秒却还是30秒就超时”的情况——因为Nginx、PHP-FPM、Apache等组件各自有独立的超时开关,必须协同调整。
直接改站点级设置(推荐首选)
宝塔面板里最稳妥、最不易出错的方式:进入【网站】→ 找到目标站点 → 【设置】→ 【PHP版本】→ 点右侧“设置”按钮 → 修改“最大脚本运行时间”(如填300)→ 保存。这个操作会自动生成并写入该站点专属的 .user.ini 文件,优先级高于全局php.ini,且不随PHP重启丢失。
同步检查并调整Web服务器超时
Nginx 和 Apache 不会读取 PHP 的 max_execution_time,它们有自己的通信等待时限:
- 如果是 Nginx:进站点【配置文件】,在
location ~ \.php$ { }区块内添加fastcgi_read_timeout 300; - 如果是 Apache:同样在站点【配置文件】末尾添加
php_admin_value max_execution_time 300 - 若用 mod_fcgid(如 Webmin 或某些旧环境),还需检查
IPCCommTimeout参数,建议设为略大于 PHP 值,例如 360
确认 PHP-FPM 层未拦截
PHP-FPM 自身也有请求终止开关,在 /www/server/php/{版本}/etc/php-fpm.d/www.conf 中查找 request_terminate_timeout。如果该行存在且数值小于你设的 max_execution_time,它会抢先杀掉进程。建议设为相同值(如300),或直接注释掉该行(表示不限制)。
代码中动态控制(按需使用)
对特定接口或任务脚本,可在开头调用:
-
set_time_limit(600);—— 将当前脚本剩余执行时间设为600秒(从调用点起算) - 慎用
set_time_limit(0)—— 生产环境易导致进程堆积,引发503或响应变慢 - 注意:此函数在
safe_mode开启时无效(PHP 5.4+ 已移除)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











