laradock에서 프로파일 러 (성능 분석) 도구 xhprof를 넣고 이동

php 를 사용하고 있는 환경에서, 프로파일러 툴이라고 하면 xhprof 가 유명한 것 같습니다만, laradock 환경에서 간단하게 사용할 수 있을까? 라고 생각해 조사해 기록입니다.

tideways/xhprof 공식 저장소: htps : // 기주 b. 코 m / 치데와 ys / php xhp 로 f - x x 텐시 온
시각화를위한 도구 : htps : // 기주 b. m / s에서 rs / xhp 여과 fhtml

아무래도 조사해 보면 laradock의 github 리포지토리에 xhprof.ini 파일이 있는 것을 알았습니다.
htps : // 기주 b. 이 m/아라도 ck/아라도 ck/bぉb/마s r/phpfpm/xhp로 f. 네

설치 방법



laradock/.env
PHP_FPM_INSTALL_XHPROF=true

이것을 활성화하고 다시 빌드.
$ docker-compose build php-fpm

코드에서의 사용법



tideways_enable();

your_code();         

file_put_contents(
    '/tmp/offer_search.xhprof',
     json_encode(tideways_disable())
);

※공식으로 써 있는 메소드명( tideways_xhprof_enable() )과 다른 이것으로 움직인다
정보 제공 블로그 (중국어) h tps : // t 란 s. 오, ぇ. 이 m / t ran s? hl = 그럼 & sl = ← - C n & u = h tps // b ぉ g. 만고. m / 2018 / 05 / php xhp 로 f - x x 텐시 온 - 01 / & p re v = 세아 rch

이것은 laradock에 설치된 tideways 버전이 4.1.7 인 반면,
tideways의 최신 버전이 5계가 되어 있기 때문이었다.
laradock 파일 해당 위치: htps : // 기주 b. 코 m / 라도 ck / 라도 ck / b / b / 04c6 아 f3389 에 bd30 2874788 b90437 f229 에 fb0b / php fpm / 도 c

덧붙여 : 수정 PR을 냈기 때문에 최신판의 Laradock이라고 움직일 것 htps : // 기주 b. 코 m / 라도 ck / ぁ 라도 ck / 푸 l / 2342

보기



덤입니다. 여러가지 보는 솔루션이 있습니다만, 내가 시도한 방법만 기록해 둡니다.

직접 파일 보기



php-fpm 의 컨테이너에 들어가, /tmp/ 디렉토리에 가면 해당 파일이 있으므로, 다운로드 되고 카피 하는 되어 내용 볼 수 있습니다.
json 이므로 jq 로 볼 수 있어 http://jsonviewer.stack.hu/ 이러므로 볼 수 있습니다.

xhprof-html로 보기



여기를 사용합니다. htps : // 기주 b. m / s에서 rs / xhp 여과 fhtml
사용법은 공식적으로 쓰여진 대로 간단합니다.


다만, 몇가지 흠집이 있었으므로 기록해 둡니다.
도구의 clone 대상을 프로젝트 바로 아래의 /public/ 아래로 하면 laradock의 php-fpm 컨테이너 안에서는 /var/www/public/xhprof-html/ 가 됩니다. 여기에 결과 출력처를 output 를 만들어 둔다고 해서 ( $ mkdir output )

tideways_xhprof_enable();

my_application();

$data = tideways_xhprof_disable();
// ★出力先に注意
$filename = '/var/www/public/xhprof-html/output/' . intval(microtime(true)) . mt_rand(1,10000) . '.xhprof';
// ★serialize していることに注意。
file_put_contents($filename, serialize($data));

파일을 직접 볼 때는 serialize 필요하지 않습니다만, 이 툴을 사용할 때는 필요합니다.

에서 복제 된 도구의 저장소 디렉토리에서 php -S에서 서버를 시작합니다. 이 PHP는 Mac PC의 php 명령을 사용합니다.

위의 코드로 출력 대상을 결정한 곳을 URL의 쿼리 매개 변수로 추가하여 요청합니다.http://localhost:8000/?dir=/Users/MyUserName/PathToProject/public/xhprof-html/output
여기까지는 문서에 쓰여진 대로입니다만, 마지막에 빠져 볼 만한 곳이 있었습니다. 출력 파일 이름으로 그대로 읽지 마십시오./Users/MyUserName/PathToProject/public/xhprof-html/output/15733478965982.xhprof.xhprof 와 같이 확장자가 2 개 붙어 있는 상태의 파일을 기대한 코드가 되어 있었습니다
지금, 이런 코드가 되고 있는 상세 미조사. $type 과 $suffix 가 각각 대응하고 있어 $type 에 어쩐지 xhprof 가 들어온다(글로벌 변수 등록을 어딘가에서 하고 있는?).
그렇다면 우선 다음과 같이 고치면 치료되었습니다. (이쪽도 시간 찾아 커밋하고 싶다···)
--- a/xhprof_lib/utils/xhprof_runs.php
+++ b/xhprof_lib/utils/xhprof_runs.php
@@ -76,7 +76,8 @@ class XHProfRuns_Default implements iXHProfRuns {

   private function file_name($run_id, $type) {

-    $file = "$run_id.$type." . $this->suffix;
+    $file = "$run_id." . $this->suffix;

     if (!empty($this->dir)) {
       $file = $this->dir . "/" . $file;

그래서 결국 브라우저에 액세스하면

이런 느낌이라든지(액세스 마다 결과를 볼 수 있다)



이런 식으로 (자세한 방법을 따라가면, 그것이 얼마나 불리고, 실시간 Wall Time에서 얼마나 걸리고 있는지 알 수 있습니다.)
※프로젝트에 다소 관계가 있는 곳은 모자이크 넣어 있습니다.

좋은 웹페이지 즐겨찾기