+
13
-

如何定位查找PHP 长时间处理的 URL的代码片段?

php

如何定位查找PHP 长时间处理的 URL的代码片段?比如这个php脚本需要20s完成请求,怎么找到这个脚本和url?


网友回复

+
16
-

如果你在使用 PHP-FPM 时遇到某些请求处理时间过长的问题,可以通过以下方法定位和解决。

1. 启用 PHP-FPM 慢日志

PHP-FPM 提供了慢日志功能,可以记录执行时间超过指定阈值的请求。

配置步骤:打开 PHP-FPM 的配置文件(通常位于 /etc/php-fpm.conf 或 /etc/php/{version}/fpm/php-fpm.conf)。

找到或添加以下配置:

slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5
slowlog:指定慢日志文件的路径。注意这个日志文件要提前vim创建好,并且chown给www用户www组request_slowlog_timeout:设置慢日志的阈值(单位:秒)。例如,设置为 5 表示记录执行时间超过 5 秒的请求。

重启 PHP-FPM 服务:

sudo systemctl restart php-fpm
查看慢日志:

慢日志会记录执行时间过长的脚本路径和堆栈信息。通过分析日志,可以找到具体的脚本和问题代码。

2. 监控 PHP-FPM 状态

PHP-FPM 提供了状态页面,可以实时监控 PHP-FPM 的运行状态。

启用状态页面:在 PHP-FPM 的配置文件(如 www.conf)中,找到或添加以下配置:
pm.status_path = /status
在 Nginx 或 Apache 中配置访问状态页面的路由。Nginx 示例:
location /status {
    include fastcgi_params;
    fastcgi_pass unix:/var/run/php-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    allow 127.0.0.1;
    deny all;
}
访问状态页面:

通过浏览器或 curl 访问状态页面(如 http://yourdomain.com/status),可以查看 PHP-FPM...

点击查看剩余70%

我知道答案,我要回答