이 글에서는 php7에서 xhprof 분석을 사용하는 방법을 소개하겠습니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
이 문서는 나중에 필요하면 언제든지 찾아볼 수 있습니다. 분석을 위해 xhprof를 사용하여 코드 테스트 및 비교 분석을 용이하게 합니다(php7 지원). 미리 테스트 환경
docker run -it -p 80:80 -v /Users/xxx/Desktop/xhprof:/data phalcon /bin/bash
1. xhprof 설치
1.1 프로젝트 가져오기
git clone https://github.com/longxinH/xhprof.git
코드 복사
1.2 프로젝트 설치
cd xhprof/extension/ /usr/server/php7/bin/phpize ./configure --with-php-config=/usr/server/php7/bin/php-config make && make install
1.3 xhprof.so 확장 추가
마지막으로 실행 후 이 so 파일을 php.ini 구성에 도입해야 합니다
View php.ini 파일 경로
/usr/server/php7/bin/php --ini Configuration File (php.ini) Path: /usr/server/php7/etc Loaded Configuration File: /usr/server/php7/etc/php.ini Scan for additional .ini files in: /usr/server/php7/etc/php Additional .ini files parsed: (none)
编辑 /usr/server/php7/etc/php.ini [Xhprof] extension=xhprof.so xhprof.output_dir=/data/logs
php-fpm을 다시 시작하세요.
2. xhprof를 사용하여 케이스를 구축하는 과정은
모니터링할 로직 앞에 다음 코드를 삽입합니다
\xhprof_enable(); ...... $order = new OrderAdepter(); $result = $order->getUserOrderByOrderNo(123); ...... $xhprof_data = \xhprof_disable(); print_r($xhprof_data);
output:
xhprof 확장에서 두 가지 함수를 발견했습니다. 호출되었으며 출력 값의 의미
ct는 이 함수에 대한 현재 호출 횟수를 나타냅니다. 이 경우
wt는 함수 실행 시간(마이크로초)을 나타냅니다. 예를 들어, 우리는 종종 점유된 메모리, CPU 및 기타 지표에 주의를 기울입니다.
XHPROF_FLAGS_NO_BUILTINS는 내장 함수를 계산하지 않습니다. 이 출력은 확장의 함수가 무시되었음을 확인하여
통계 메모리 사용량 필드에 mu와 pmu라는 두 가지 출력이 있음을 발견했습니다. 사용된 메모리(바이트), pmu는 최대 메모리 사용량(바이트)을 나타냅니다.
3. Chart xhprof
3.1 이때 xhprof_lib 라이브러리를 사용해야 합니다.
\xhprof_enable( XHPROF_FLAGS_MEMORY +XHPROF_FLAGS_CPU +XHPROF_FLAGS_NO_BUILTINS );
가 포함되어 있습니다. 실행하면 파일 식별자로 이해할 수 있는 문자열이 인쇄됩니다. . save_run 메소드가 실행된 것을 발견했는데, 어디에 저장되어 있나요?
예, xhprof.output_dir에서 구성한 경로 아래에 있습니다. 직접 디렉토리를 생성하세요)
저희가 분석한 내용 중 일부가 여기에 저장되어 있습니다.3.2 별도의 서비스를 구성해 보세요. 분석 결과에 액세스하세요
우리는 xhprof 프로젝트의 xhprof_html 디렉토리를 가리킵니다
여기에서 우리의 요점을 이해하셨으리라 믿습니다. run_id와 save_run에서 프로젝트의 역할은
맨 위 부분입니다 는 요청된 인터페이스 표시기에 대한 개요이며 다음은 호출된 각 기능의 구체적인 실행입니다. 필드 이름 의미: 호출 수 호출 포함 벽 시간 호출에는 마이크로초 단위로 계산된 하위 함수 실행 시간이 포함됩니다. 하위 트리 실행 시간을 제외하고 함수 자체 실행에 소요된 시간입니다. CPU 포함 호출에는 하위 함수 Excl이 사용한 모든 CPU 시간이 포함됩니다. 하위 트리 실행 시간은 제외됩니다. 하위 함수 실행(바이트 단위로 측정) Excl.MemUse 함수 실행 자체의 메모리(바이트), Incl.PeakMemUseIncl.MemUse의 피크 값, Excl.PeakMemUseExcl.MemUse나머지 % 엔딩은 다음과 같습니다. 해당 비율3.3 [전체 호출 그래프 보기]다음 두 줄의 코드를 실행하여 설치할 수도 있습니다
\xhprof_enable(XHPROF_FLAGS_MEMORY + XHPROF_FLAGS_CPU+XHPROF_FLAGS_NO_BUILTINS); ...... $order = new OrderAdepter(); $result = $order->getUserOrderByOrderNo(123); ...... $xhprof_data = \xhprof_disable(); include_once '/data/xhprof-master/xhprof_lib/utils/xhprof_lib.php'; include_once '/data/xhprof-master/xhprof_lib/utils/xhprof_runs.php'; $xhprof_runs = new \XHProfRuns_Default(); $run_id = $xhprof_runs->save_run($xhprof_data, 'your_project'); echo $run_id; //output 5cbf25e21fe9b
yum install -y libpng yum install -y graphviz
빨간색 부분 노란색 부분만 분석하고 싶으시다면 메서드를 클릭한 다음 [전체 호출 그래프 보기]를 클릭하여 차트를 확인하세요
4. 문제위에서 xhprof를 사용했을 때 발견했습니다. 강한 종속성, xhprof 설치 패키지의 여러 클래스가 코드에 도입되었습니다.
여기서 동일한 기능을 달성하기 위해 작곡가 패키지 참조를 사용할 수 있으며, pbweb/xhprof 패키지를 도입하는 것이 좋습니다. 추천 학습:yum -y install libtool-ltdl-devel cd /data/graphviz-2.24.0 ./configure make make install로그인 후 복사php 비디오 튜토리얼
위 내용은 php7에서 xhprof 분석을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!