PHP 개발에서 성능 최적화 및 리소스 관리는 매우 중요한 링크입니다. 런타임 동안 스크립트가 차지하는 메모리의 양을 이해하면 개발자가 메모리 누출 또는 불합리한 메모리 사용을 적시에 발견하여 타겟팅 된 최적화를 수행 할 수 있습니다. PHP의 내장 메모리 _get_usage 함수는 현재 스크립트 메모리 사용을 모니터링하는 강력한 도구입니다. 이 기사는이 기능의 사용법을 자세히 설명하고 실제 응용 프로그램 시나리오를 기반으로 사용 기술을 습득 할 수 있도록 도와줍니다.
memory_get_usage는 현재 스크립트가 차지하는 메모리 바이트 수를 반환하기 위해 PHP가 제공하는 내장 기능입니다. 기본 구문은 다음과 같습니다.
memory_get_usage(bool $real_usage = false): int
$ real_usage 매개 변수는 부울 값이며 거짓 으로 기본값입니다.
false 인 경우 함수는 PHP에 의해 스크립트에 적용되는 메모리 크기를 반환합니다. 이는 실제로 스크립트에 할당 된 물리적 메모리를 의미하지는 않습니다.
사실 인 경우 실제로 PHP 스크립트에 할당 된 메모리 크기가 반환되며 기본 반환 값보다 클 수 있습니다.
<?php
echo "초기 메모리 사용: " . memory_get_usage() . " 바이트\n";
$array = range(1, 10000);
echo "메모리 사용 배열을 작성한 후: " . memory_get_usage() . " 바이트\n";
?>
이 코드는 먼저 스크립트의 초기 메모리 사용량을 출력 한 다음 10,000 정수 배열을 생성하고 마지막으로 현재 메모리 사용량을 출력합니다.
대규모 애플리케이션에서는 복잡한 루프가 수행되거나 다량의 데이터가로드 될 수 있습니다. 메모리 사용을 적시에 모니터링하면 메모리 소진으로 인해 스크립트가 충돌하는 것을 방지 할 수 있습니다.
<?php
echo "스크립트의 메모리 사용을 시작하십시오: " . memory_get_usage() . " 바이트\n";
for ($i = 0; $i < 1000; $i++) {
$data = str_repeat("A", 10000);
if ($i % 100 === 0) {
echo "1. {$i} 두 번째 루프 메모리 사용: " . memory_get_usage() . " 바이트\n";
}
}
echo "스크립트로 메모리 사용을 종료합니다: " . memory_get_usage() . " 바이트\n";
?>
키 코드 세그먼트 전후에 memory_get_usage를 호출함으로써, 메모리에 대한 다른 쓰기 방법 또는 데이터 구조의 영향을 비교하여 대상 최적화를 수행 할 수 있습니다.
PHP는 또한 유사한 함수 memory_get_peak_usage 를 가지고 있으며 스크립트 실행 중에 사용되는 최대 메모리 피크를 얻는 데 사용됩니다. 또한 $ real_usage 매개 변수도 허용합니다.
<?php
echo "메모리 피크 값: " . memory_get_peak_usage() . " 바이트\n";
?>
둘 다의 사용을 결합함으로써 개발자는 메모리 사용을 더 잘 이해할 수 있습니다.
<?php
echo "초기 메모리: " . memory_get_usage() . " 바이트\n";
$data = [];
for ($i = 0; $i < 10000; $i++) {
$data[] = md5($i);
}
echo "현재 메모리: " . memory_get_usage() . " 바이트\n";
echo "메모리 피크 값: " . memory_get_peak_usage() . " 바이트\n";
?>
memory_get_usage () 는 현재 스크립트의 메모리 사용을 얻는 데 사용됩니다.
이를 통해 메모리 소비를 모니터링하고 분석 할 수 있으며 잠재적 성능 문제를 찾을 수 있습니다.
memory_get_peak_usage ()를 사용하면 최대 메모리 소비 피크를 이해할 수 있습니다.
대규모 프로젝트 및 자원에 민감한 프로젝트 에서이 두 기능의 합리적인 사용은 성능 최적화에 매우 중요합니다.
<?php
echo "초기 메모리 사용: " . memory_get_usage() . " 바이트\n";
$array = range(1, 10000);
echo "메모리 사용 배열을 작성한 후: " . memory_get_usage() . " 바이트\n";
for ($i = 0; $i < 1000; $i++) {
$data = str_repeat("A", 10000);
if ($i % 100 === 0) {
echo "1. {$i} 두 번째 루프 메모리 사용: " . memory_get_usage() . " 바이트\n";
}
}
echo "메모리 피크 값: " . memory_get_peak_usage() . " 바이트\n";
?>