如何解决php方法执行时间过长的问题

藏色散人
发布: 2021-07-23 10:51:32
原创
5301人浏览过
php方法执行时间过长的解决办法:1、进行Nginx网关请求超时设置;2、进行PHP脚本执行时间上限设置。

如何解决php方法执行时间过长的问题

本文操作环境:windows7系统、PHP7.1版,DELL G3电脑

如何解决php方法执行时间过长的问题?

解决 PHP 方法执行时间过长导致 502 Bad Gateway

背景

立即学习PHP免费学习笔记(深入)”;

最近遇到一个问题,有一段 PHP 代码需要涉及到长时间的 IO 操作,而这一段会阻塞请求所在的线程,导致请求超时。

你可能会说,这有啥难的,开个线程异步去做,做好了更新状态就 OK 了。这真是一个不错的方案,可惜这一整套代码都是别人的。如果要修改代码,业务上会牵一发而动全身,所以我的解决办法是尽量不修改代码的情况下,通过配置超时时间来解决这个问题。

解决方案

从以上问题来看,超时主要受到两个因素的影响:

  • Nginx 网关请求超时设置

  • PHP 脚本执行时间上限设置

我们依次进行设置。

Nginx 网关请求超时设置

Nginx 支持超时的设置粒度很细。主要使用的几个如下:

keepalive_timeout
登录后复制

Nginx 使用 keepalive_timeout 来指定 KeepAlive 的超时时间。指定每个 TCP 连接最多可以保持多长时间。Nginx 的默认值是 75 秒,有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。

fastcgi_connect_timeout
登录后复制

与FastCGI服务器建立连接的超时。

fastcgi_send_timeout
登录后复制

设置将请求传输到FastCGI服务器的超时。 仅在两次连续写入操作之间设置超时,而不是为整个请求的传输。 如果FastCGI服务器在此时间内未收到任何内容,则关闭连接。

fastcgi_read_timeout
登录后复制

从FastCGI服务器读取响应的超时。 仅在两个连续的读操作之间设置超时,而不是为整个响应的传输。 如果FastCGI服务器在此时间内未传输任何内容,则关闭连接。

考虑到一次请求 PHP 脚本的执行和后三个设置比较相关。所以在对应网站的 Nginx 配置文件中添加设置即可。

fastcgi_connect_timeout 600s;
fastcgi_send_timeout 600s;
fastcgi_read_timeout 600s;
登录后复制

PHP 脚本执行时间上限设置

PHP 脚本的执行时间主要是受两个配置的影响:

php.ini 中 max_execution_time 和 max_input_time
登录后复制

php.ini 的默认位置在 /usr/local/php/etc/

将 php.ini 配置文件中的这两个配置项修改为超时时间上限。

max_execution_time = 600
max_input_time = 600
php-fpm.conf 中 request_terminate_timeout
php-fpm.conf 的默认位置在 /usr/local/php/etc/
request_terminate_timeout 也设置为超时时间的上限。
request_terminate_timeout = 600
登录后复制

修改完成后重启 Nginx 和 php-fpm 即可。

service nginx reload
/etc/init.d/php-fpm reload
登录后复制

推荐学习:《PHP视频教程

以上就是如何解决php方法执行时间过长的问题的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号