PHP 스크립트 프로파일링

Subodh Poudel 2022년6월21일
PHP 스크립트 프로파일링

이 기사에서는 Xdebug를 사용하여 PHP 스크립트를 프로파일링하는 과정을 안내합니다.

Xdebug를 사용하여 PHP에서 스크립트 프로파일링

Xdebug는 PHP 스크립트를 디버깅하고 프로파일링하는 데 널리 사용되는 PHP 도구입니다. 스크립트를 프로파일링한다는 것은 코드를 분석하여 최적화되고 높은 수준의 성능을 제공하는지 확인하는 것을 의미합니다.

프로파일링은 프로그램의 CPU, 메모리 및 네트워크 사용률에 대한 정보를 제공합니다. 아래 섹션에서는 PHP에서 프로파일링 환경을 설정하고 샘플 스크립트를 프로파일링하는 방법을 보여줍니다.

Xdebug 도구 설치

첫 번째 단계는 Xdebug 도구를 다운로드하는 것입니다. 먼저 다음 명령을 사용하여 시스템을 업데이트하십시오.

sudo apt-get update

로컬 패키지를 업데이트한 후 터미널에서 다음 명령을 사용하여 Xdebug 도구를 설치합니다.

sudo apt-get install php-xdebug

다음으로 /etc/php/8.1/mods-available/xdebug.ini 경로를 탐색하고 xdebug.ini 파일을 엽니다. 여기에서 8.1은 튜토리얼에서 사용된 시스템의 PHP 버전입니다.

사용자마다 다를 수 있습니다. xdebug.ini 파일에 다음 행을 추가하십시오.

zend_extension=/usr/lib/php/20210902/xdebug.so
xdebug.remote_autostart = 1
xdebug.remote_enable = 1
xdebug.remote_handler = dbgp
xdebug.remote_host = 127.0.0.1
xdebug.remote_log = /tmp/xdebug_remote.log
xdebug.remote_mode = req
xdebug.remote_port = 9005

여기에서 zend_extension 속성 값에 대한 /usr/lib/php/20210902/xdebug.so 경로의 20210902 디렉토리는 시스템마다 다를 수 있습니다. 경로로 이동하여 zend_extension 속성 값에 대해 올바른 디렉토리 이름을 사용하십시오.

그런 다음 웹 서버가 Apache인 경우 다음 명령을 사용하여 웹 서버를 다시 시작합니다.

sudo systemctl restart apache2
sudo /etc/init.d/apache2 restart

nginx의 경우 다음 명령을 사용합니다.

sudo systemctl restart nginx

마지막으로 xdebug가 시스템에 설치됩니다.

Xdebug를 사용하도록 php.ini 구성

phpinfo() 함수의 출력을 보고 PHP에 Xdebug가 설치되었는지 확인할 수 있습니다. 그러나 도구는 아직 사용할 준비가 되지 않았습니다.

php.ini 파일에서 구성해야 합니다. 이를 위해 php.ini 파일로 이동하여 텍스트 편집기로 엽니다.

phpinfo() 출력에서 ​​파일의 경로를 찾을 수 있습니다. 현재 시스템에서 파일은 /etc/php/8.1/apache2/php.ini 경로에 있습니다.

php.ini 파일에서 파일 끝에 다음 줄을 추가합니다.

[xdebug]
zend_extension=/usr/lib/php/20210902/xdebug.so
xdebug.show_local_vars=1

시스템에서 사용되는 디렉토리로 디렉토리 이름을 20210902로 바꿉니다. 다음으로 display_errorsdisplay_startup_errors 속성을 On으로 설정하고 파일을 저장합니다.

다시 한 번 웹 서버를 다시 시작합니다. 이제 Xdebug를 사용할 준비가 되었습니다.

PHP 스크립트 프로파일링

마지막 단계는 PHP 스크립트를 프로파일링하는 것입니다. 프로필을 작성하려면 PHP 코드를 작성해야 합니다.

예를 들어, 네 개의 변수 $a, $b, $c$d를 만듭니다. $a$b에 정수 값 5 및 문자열 값 '5'를 할당합니다.

유사하게, $c$darray(5)array('5') 배열을 할당합니다.

다음으로 var_dump() 함수를 사용하여 4개의 변수를 모두 덤프합니다. 마지막으로 변수 $v를 다시 덤프합니다.

$v라는 변수를 생성하지 않았습니다.

예제 코드:

$a=5;
$b='5';
$c=array(5);
$d=array('5');

var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);

var_dump($v);

출력:

PHP 스크립트 프로파일링

출력 섹션에서 PHP 스크립트가 프로파일링됩니다. 코드의 잘못된 부분이 강조 표시됩니다.

시간, 메모리, 기능, 위치에 대한 정보를 제공하는 Call Stack과 같은 정보를 보여줍니다. 마찬가지로 로컬 범위의 변수에 대한 정보도 제공됩니다.

이런 식으로 Xdebug를 사용하여 PHP 스크립트를 프로파일링할 수 있습니다.

Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn