>  기사  >  백엔드 개발  >  코드 성능 병목 현상에 대한 PHP+xdebug 분석 정보

코드 성능 병목 현상에 대한 PHP+xdebug 분석 정보

藏色散人
藏色散人앞으로
2021-02-18 17:27:212887검색

코드 성능 병목 현상을 분석하기 위한 PHP + xdebug

보통 xdebug 플러그인이 활성화되고 성능 테스트 출력 파일이 생성됩니다. , 일반적으로 cachegrind.out.xxxx 파일이 존재합니다. xdebug插件,性能测试输出文件会伴随生成,通常是以cachegrind.out.xxxx 文件存在。

该文件可以通过第三方工具来进行代码性能分析。

但如果本地有多个项目/网站,所有的profile 都输出到一个文件中了,这样并不方便后面进行性能分析。

自定义profile 文件名称

可以通过配置xdebug.profiler_output_name 参数来设置输出文件名称,部分参数如下:

符号 含义 配置样例 样例文件名
%c 当前工作目录的crc32校验值 cachegrind.out.%c cachegrind.out.1258863198
%p 当前服务器进程的pid cachegrind.out.%p cachegrind.out.9685
%r 随机数 cachegrind.out.%r cachegrind.out.072db0
%s 脚本文件名(注) cachegrind.out.%s cachegrind.out._home_httpd_html_test_xdebug_test_php
%t Unix时间戳(秒) cachegrind.out.%t cachegrind.out.1179434742
%u Unix时间戳(微秒) cachegrind.out.%u cachegrind.out.1179434749_642382
%H $_SERVER['HTTP_HOST'] cachegrind.out.%H cachegrind.out.localhost
%R $_SERVER['REQUEST_URI'] cachegrind.out.%R cachegrind.out._test_xdebug_test_php_var=1_var2
%S session_id (来自$_COOKIE 如果设置了的话) cachegrind.out.%S cachegrind.out.c70c1ec2375af58f74b390bbdd2a679d
%% %字符 cachegrind.out.%% cachegrind.out.%%

编辑php.ini 配置文件:

xdebug.profiler_output_name = cachegrind.out.%H

然后重启 php server。

在Mac 下,profile 文件存放于/var/tmp/目录中。

性能分析

在Mac 下,有MacCallGrind 和 qcachegrind 可以使用,不过前者是收费,直接通过Apple Store下载,后者是免费。需要手动安装。

安装graphviz,用来Call Graph功能:

$ brew install graphviz

安装 qcachegrind:

$ brew install qcachegrind

安装完成之后,就可以打开 qcachegrind 应用了,图形界面如下:

코드 성능 병목 현상에 대한 PHP+xdebug 분석 정보

其他

不过需要注意,开启了profile

이 파일은 타사 도구를 통한 코드 성능 분석에 사용될 수 있습니다.

하지만 로컬에 여러 프로젝트/웹사이트가 있는 경우 모든 프로필이 하나의 파일로 출력되므로 나중에 성능 분석에 편리하지 않습니다.

사용자 정의된 프로필 파일 이름

코드 성능 병목 현상에 대한 PHP+xdebug 분석 정보 xdebug.profiler_output_name 매개변수를 구성하여 출력 파일 이름을 설정할 수 있습니다. 일부 매개변수는 다음과 같습니다.

cachegrind.out.%H table> php.ini 구성 파일을 편집하세요:

$ sudo rm -fr /private/var/tmp/cachegrind.out.*
그런 다음 PHP 서버를 다시 시작하세요. 🎜Mac에서는 프로필 파일이 /var/tmp/ 디렉터리에 저장됩니다. 🎜

성능 분석

🎜Mac에서는 MacCallGrind와 qcachegrind를 사용할 수 있지만 전자는 유료이며 Apple Store를 통해 직접 다운로드할 수 있는 반면 후자는 무료입니다. 수동 설치가 필요합니다. 🎜🎜Call Graph 기능을 위한 graphviz 설치: 🎜rrreee🎜qcachegrind 설치: 🎜rrreee🎜설치가 완료되면 qcachegrind 애플리케이션을 열 수 있습니다. 그래픽 인터페이스는 다음과 같습니다. 🎜🎜코드 성능 병목 현상에 대한 PHP+xdebug 분석 정보🎜

Others

🎜 하지만 프로필 파일 출력을 켜면 로컬 프로젝트가 많으면 디스크 공간을 쉽게 차지하게 된다는 점에 유의해야 합니다. 아래 그림은 그 상태를 보여줍니다. 나는 약 반년 동안 청소를 하지 않았습니다: 🎜🎜🎜🎜🎜🎜🎜🎜 청소는 다음 명령을 사용하여 수행할 수 있습니다: 🎜rrreee🎜
기호 의미 구성 샘플 샘플 파일 이름
%c 현재 작업 디렉터리의 Crc32 확인 값 cachegrind.out.%c cachegrind.out.1258863198
%p 현재 서버 프로세스의 pid cachegrind.out.%p 캐시그라인드.아웃 .9685
%r 임의의 숫자 cachegrind.out.%r 캐시그라인드.out .072db0
%s 스크립트 파일 이름(참고) cachegrind.out.%s cachegrind.out._home_httpd_html_test_xdebug_test_php
%t Unix 타임스탬프(초) cachegrind.out.%t td> cachegrind.out.1179434742
%u Unix 타임스탬프(마이크로초) cachegrind.out .%u cachegrind.out.1179434749_642382
%H $_SERVER['HTTP_HOST']cachegrind.out.localhost
%R $_SERVER['REQUEST_URI'] cachegrind.out.%R cachegrind.out._test_xdebug_test_php_var=1_var2
%S session_id(설정된 경우 $_COOKIE에서) cachegrind.out.%S cachegrind.out.c70c1ec2375af58f74b390bbdd2a679d
% % % 문자 cachegrind.out.%% cachegrind.out.%%

위 내용은 코드 성능 병목 현상에 대한 PHP+xdebug 분석 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제