PHP 개발 중에 코드의 메모리 풋 프린트를 디버깅하고 최적화하는 것은 특히 데이터베이스 쿼리 결과 처리에 매우 중요한 부분입니다. MySQLI_Result 함수는 특히 많은 양의 데이터를 처리 할 때 MySQL 쿼리 결과를 처리 할 때 많은 메모리를 차지할 수 있습니다. 따라서 메모리 풋 프린트를 분석하는 방법을 이해하는 것은 PHP 응용 프로그램 성능을 최적화하는 데 중요합니다. 이 기사에서는 XdeBug를 사용하여 PHP에서 MySQLI_Result 함수의 메모리 풋 프린트를 분석하는 방법을 안내합니다.
Xdebug는 개발자가 코드를 추적하고 성능 분석을 수행하며 메모리 사용을 모니터링하는 데 도움이되는 매우 강력한 PHP 디버깅 도구입니다. Xdebug의 성능 분석 도구는 각 기능 호출의 메모리 사용, 실행 시간 등과 같은 중요한 정보를 표시 할 수 있으며 PHP 응용 프로그램을 분석하고 최적화하는 데 중요한 도구 중 하나입니다.
분석을 시작하기 전에 먼저 PHP 환경이 XdeBug로 설치되고 구성되어 있는지 확인하십시오. 다음은 XDEBUG를 설치하고 구성하는 단계입니다.
XDEBUG를 설치하십시오
다음 명령을 통해 XdeBug를 설치할 수 있습니다 (운영 체제에 따라 해당 설치 방법을 선택하십시오).
우분투 :
sudo apt install php-xdebug
Mac OS (홈브류 사용) :
brew install php-xdebug
xdebug를 구성하십시오
PHP의 구성 파일 php.ini 에서 다음 구성을 추가하여 xdebug를 활성화하십시오.
zend_extension="xdebug.so" ; 여기에 지정하십시오 Xdebug 확장 된 경로
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_port=9003
구성이 완료되면 PHP 서비스 (예 : Apache 또는 PHP-FPM)를 다시 시작하십시오.
mysqli_result 의 메모리 풋 프린트를 분석하려면 xdebug가 메모리 사용을 추적 할 수 있도록해야합니다. Xdebug는 PHP 요청 당 메모리 소비를 표시 할 수 있으며 다른 기능 호출 중에 메모리 할당을 볼 수 있습니다. 다음으로 특정 분석을 위해 XDEBUG를 사용하는 방법을 소개합니다.
php.ini 파일에서 xdebug의 메모리 분석 모드를 활성화하여 메모리 사용이 기록되도록하십시오. 다음 구성 추가 :
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/tmp/xdebug" ; 출력 디렉토리를 설정하십시오
이를 통해 XdeBug의 성능 분석기를 가능하게하고 메모리 사용을 지정된 디렉토리로 출력합니다.
PHP 코드에서 MySQLI_Query를 사용하여 쿼리를 실행하고 쿼리 결과를 처리하십시오. 분석하려는 코드가 다음과 같습니다.
<?php
// 데이터베이스에 연결하십시오
$conn = mysqli_connect("localhost", "username", "password", "database");
// 쿼리를 실행하십시오
$result = mysqli_query($conn, "SELECT * FROM large_table");
// 출력 결과 및 릴리스 리소스
while ($row = mysqli_fetch_assoc($result)) {
// 약간의 처리를 가정합니다
}
// 데이터베이스 연결을 닫습니다
mysqli_free_result($result);
mysqli_close($conn);
?>
이 코드를 실행할 때 Xdebug는 자동으로 메모리 사용량을 기록합니다. /tmp /xdebug 디렉토리에서 파일을 보면 메모리 사용량을 분석 할 수 있습니다. Xdebug는 .cachegrind 파일을 생성하며 Qcachegrind 와 같은 도구를 사용하여 분석 할 수 있습니다.
Xdebug의 성능 분석 파일을 보면 각 기능 호출의 메모리 사용에 대해 자세히 알아볼 수 있습니다. Qcachegrind와 같은 도구를 사용하면 MySQLI_Query , MySQLI_Fetch_Assoc 와 같은 함수의 메모리 사용을 포함하여 메모리 사용을 시각화하는 데 도움이됩니다.
메모리 사용을 분석 한 후 MySQLI_RESULT 에 높은 메모리 발자국이 있음을 알 수 있습니다. 몇 가지 일반적인 최적화 방법은 다음과 같습니다.
데이터를 한 줄씩 처리 : 한 번에 많은 양의 데이터를로드하지 않으면 페이징 쿼리를 사용하여 매번로드 된 데이터 양을 제한 할 수 있습니다.
무료 메모리 : 쿼리 결과가 더 이상 사용되지 않으면 MySQLI_FREE_RESULT를 제 시간에 전화하여 메모리를 무료로 사용하십시오.
쿼리 최적화 : SQL 쿼리가 필요한 필드 만 반환하고 불필요한 열과 데이터를 반환하는 것을 피하십시오.
XDEBUG를 사용하여 PHP에서 MySQLI_RESULT 기능의 메모리 사용량을 분석함으로써 개발자는 데이터베이스 쿼리 결과의 메모리 사용량을 더 잘 이해하고 최적화 할 수 있습니다. Xdebug의 강력한 성능 분석 기능은 개발자가 메모리 소비가 높은 영역을 찾고 해당 최적화 측정을 수행하는 데 도움이 될 수 있습니다. 이 팁을 마스터하면 PHP 애플리케이션이보다 효율적이고 안정적입니다.