php 고급

Webgrind

Webgrind

온라인에서 프로파일링 결과를 확인할 수 있도록 도와주는 도구로 함수나 메소드 별로 얼마나 시간이 소요됐는가 보여준다. 그래프로 프로파일링을 시각화하는 도구를 제공하고 있는 것이 특징

홈페이지

https://github.com/jokkedk/webgrind

웹인터페이스 설치

리눅스 배포판인 우분투를 기준으로 설명하겠다.

document root 하위 적당한 곳에 webgrind를 다운로드 받는다. 우분투는 /var/www 아래가 document root다. 

wget https://github.com/jokkedk/webgrind/archive/master.zip

압축을 해제한다.

unzip master;

설정을 변경한다. 

nano webgrind-master/config.php 

위의 파일 중에 Webgrind_Config 클래스의 static 변수들의 값을 이용해서 webgrind의 동작을 제어 할 수 있다. 그 중에 핵심적인 설정은 아래와 같다.

  • $profilerDir : 프로파일링 정보가 저장되는 디렉토리로 xdebug의 설정 중 xdebug.profiler_output_dir 의 값과 같아야 한다.

이제 웹으로 접속해보자. 경로는 아래와 같다.

webgrind가 설치된 디렉토리/webgrind-master/

아래와 같이 보인다면 성공

프로파일을 실행한다. 프로파일을 실행하는 방법은 http://opentutorials.org/module/411/3649를 참조하자. /tmp 디렉토리에 cachegrind.out. 로 시작하는 파일이 있다면 webgrind가 알아서 프로파일 대상을 만들어 줄 것이다. 자세한 사용법은 동영상을 참고하자.

update 버튼을 누르면 프로파일 결과가 출력된다.

그래프 설치

webgrind는 프로파일링 데이터를 그래프로 만들어주는 도구인 gprof2dot.py 를 사용한다. gprof2dot.py는 그래프를 그려주기 위해서 graphviz를 다시 사용한다. 이것들을 위한 설정 및 설치를 해줘야 한다.

우선 프로파일링 정보를 그래프로 출력하고 싶다면 graphviz를 설치해야 한다.

sudo apt-get install graphviz

정상적으로 설치 되었는지 확인하기 위해서 아래의 명령을 실행해본다.

dot --help

dot의 사용법이 출력된다면 설치에 성공한 것이다. 

graphviz 설치까지 성공했다면 이제 설정을 해야 한다. 우선 python과 graphviz 실행 파일의 위치를 찾아야 한다. 

아래의 명령을 입력해서 dot와 python의 설치 경로를 찾는다.

find /usr -name dot
find /usr -name python

config.php 파일을 열어서 $pythonExecutable와 $dotExecutable의 값을 설정해준다.

Show Call Graph를 실행하면 그래프가 출력된다. 

댓글

댓글 본문
작성자
비밀번호
  1. 1
  2. Wonder Jung
    감사합니다! 바로바로 나오네요 ^^
    대화보기
    • Wonder Jung
      Mac OSX에서의 graphviz 설치 - Homebrew 사용은 다음과 같습니다.
      (참고)http://brewformulas.org/Graphviz

      1. 터미널에서 Homebrew로 graphviz를 설치합니다.
      JungWonducks-MacBook-Pro:webgrind WONDER$ brew install graphviz

      2. 진행메시지가 다음과 같이 보여집니다.
      ==> Downloading https://homebrew.bintray.com.......gz
      ######################################################################## 100.0%
      ==> Pouring graphviz-2.38.0.el_capitan.bottle.1.tar.gz
    • 이재윤
      윈도우에서 xampp로 했는데 tap디렉토리를 못찾나 gprofdot.py이 없어서 그런가 안돼네요
    • 쌈닭
      :D
    • Tael Kim
      which dotwhich python명령을 통해 설치된 바이너리 위치를 명확하게 찾을 수 있습니다.
    버전 관리
    egoing
    현재 버전
    선택 버전
    graphittie 자세히 보기