温馨提示×

ubuntu php-fpm如何设超时时间

小樊
49
2026-09-10 09:18:16
栏目: 编程语言

在 Ubuntu 上,PHP‑FPM 的“超时时间”通常分为 请求执行超时FPM 进程/连接相关超时 两类。下面按常见场景说明如何设置。


一、PHP 脚本执行超时(最常见)

1️⃣ php.ini 中的 max_execution_time

控制 单个 PHP 脚本 最长执行时间(秒)

max_execution_time = 30

修改后重启 PHP‑FPM:

sudo systemctl restart php-fpm
# 或(版本不同)
sudo systemctl restart php8.1-fpm

注意:

  • CLI 模式不受此限制
  • 如果有 set_time_limit(),会覆盖该值

2️⃣ PHP‑FPM 池配置中的 request_terminate_timeout

强烈推荐用这个,比 max_execution_time 更可靠(即使脚本忽略时间限制也能杀掉)

路径示例:

/etc/php/8.1/fpm/pool.d/www.conf

添加或修改:

request_terminate_timeout = 30s

重启:

sudo systemctl restart php8.1-fpm

✅ 这是 PHP‑FPM 层面的硬超时


二、PHP‑FPM 进程 & 连接超时

3️⃣ request_slowlog_timeout(慢日志)

不是超时杀进程,而是记录慢请求

request_slowlog_timeout = 10s
slowlog = /var/log/php-fpm/slow.log

4️⃣ idle_timeout(进程空闲超时)

控制空闲进程存活时间

pm = dynamic
pm.process_idle_timeout = 10s

三、Nginx / Apache 相关超时(很重要)

即使 PHP 设了超时,Web 服务器也可能先断掉

Nginx 示例

fastcgi_read_timeout 60s;
proxy_read_timeout 60s;

修改后:

sudo nginx -t
sudo systemctl reload nginx

四、快速对照表

超时类型 配置文件 示例
脚本执行 php.ini max_execution_time
FPM 硬超时 pool.conf request_terminate_timeout
慢日志 pool.conf request_slowlog_timeout
Web 服务 nginx fastcgi_read_timeout

五、推荐做法(生产环境)

✅ 用 PHP‑FPM 的 request_terminate_timeout
✅ Web 服务器超时 ≥ PHP 超时
❌ 不要只依赖 max_execution_time


如果你能告诉我:

  • PHP 版本(7.x / 8.x)
  • Web 服务(Nginx / Apache)
  • 是接口、定时任务还是页面

我可以给你一套精确配置示例

0