首页 小组 问答 话题 好文 素材 用户 唠叨 我的社区

[分享]执行40秒断开,90秒断开,自动断开,解决 PHP 执行时间过长导致断开连接的问题

九秘Lv.1种子选手
2024-10-15 14:41:52
0
8
php

当遇到 PHP 脚本执行时间超过40秒导致断开连接的问题时,通常需要调整相关的服务器和 PHP-FPM(FastCGI Process Manager)配置。


解决 PHP 执行时间过长导致断开连接的问题

在搭建 PHP 环境的过程中,可能会遇到 PHP 脚本执行时间过长导致断开连接的问题。这可能是由于服务器或 PHP-FPM 设置中的执行时间限制引起的。本文将介绍如何通过调整相关设置来解决这个问题。

1. 调整 PHP 脚本执行时间限制

在 PHP 脚本中,可以通过以下方式调整执行时间限制:

set_time_limit(0);

ini_set("max_execution_time", 600);

ini_set("default_socket_timeout", 600);

这将确保 PHP 脚本的执行时间不受限制,并将最大执行时间和默认套接字超时设置为 600 秒。

2. 调整 MySQL 查询超时

在处理涉及数据库查询的脚本中,有时候也需要调整 MySQL 查询的超时时间。可以通过以下方式在 PHP 脚本中设置:

在连接数据库之前设置查询超时时间

ini_set('mysql.connect_timeout', 600);

这会将 MySQL 连接的查询超时时间设置为 600 秒。

3. 调整 FastCGI 设置(针对 Apache)

在使用 Apache 作为 Web 服务器,并启用了 FastCGI 模块时,需要调整 FastCGI 的相关设置。在 Apache 配置文件中增加如下配置:

<IfModule mod_fcgid.c>

FcgidProcessLifeTime 8200

FcgidIOTimeout 8200

FcgidConnectTimeout 4000

</IfModule>

这将调整 FastCGI 进程的生命周期、I/O 超时和连接超时。

4. 调整 FastCGI 和 PHP-FPM 设置(针对 Nginx)

如果使用 Nginx 作为 Web 服务器,并启用了 FastCGI 或 PHP-FPM,可以通过以下方式调整相关设置:

对于 FastCGI:

fastcgi_read_timeout 600;

这会将读取响应的超时时间设置为 600 秒。

对于 PHP-FPM:

在 PHP-FPM 的配置文件中,尝试增加以下设置:

request_terminate_timeout = 600

process_control_timeout = 600

这会分别定义 PHP-FPM 进程的终止时间和 master 进程等待 worker 进程完成的最长时间。

5. 重启服务

无论你做了哪些更改,都要记得重新启动服务器,以确保设置生效:

对于 Apache

sudo service apache2 restart

对于 Nginx 和 PHP-FPM

sudo service nginx restart

sudo service php-fpm restar

九秘
九秘

7 天前

签名 : 我常驻在>https://www.huaqu.club/ask   8       0
评论
站长交流