PHP 메모리 부족 오류 해결하기

프리터코더·2025년 5월 25일
0

php 문제 해결

목록 보기
20/79

PHP 개발 중 가장 자주 마주치는 문제 중 하나가 바로 메모리 부족 오류입니다. 이 문제의 원인과 해결책을 알아보겠습니다.

주요 증상

Fatal error: Allowed memory size of 134217728 bytes exhausted

원인 분석

  1. 대용량 데이터 처리: 큰 파일이나 많은 데이터를 한 번에 메모리에 로드
  2. 무한 루프: 잘못된 반복문으로 인한 메모리 누수
  3. 비효율적인 배열 사용: 불필요하게 큰 배열 생성

해결책

1. 메모리 제한 증가

// 임시 해결책
ini_set('memory_limit', '512M');

// 또는 php.ini에서 설정
// memory_limit = 512M

2. 스트림 처리 사용

// 잘못된 방법
$content = file_get_contents('large_file.txt');

// 올바른 방법
$handle = fopen('large_file.txt', 'r');
while (($line = fgets($handle)) !== false) {
    // 한 줄씩 처리
    processLine($line);
}
fclose($handle);

3. 메모리 사용량 모니터링

echo "현재 메모리 사용량: " . memory_get_usage(true) / 1024 / 1024 . "MB\n";
echo "최대 메모리 사용량: " . memory_get_peak_usage(true) / 1024 / 1024 . "MB\n";

// 변수 해제
unset($largeArray);

4. 제너레이터 활용

// 메모리 효율적인 데이터 처리
function getNumbers($max) {
    for ($i = 1; $i <= $max; $i++) {
        yield $i;
    }
}

foreach (getNumbers(1000000) as $number) {
    // 메모리를 절약하며 처리
}

예방법

  • 대용량 데이터는 청크 단위로 처리
  • 사용하지 않는 변수는 unset() 으로 해제
  • 프로파일링 도구로 메모리 사용량 모니터링
  • 적절한 메모리 제한 설정

메모리 부족 오류는 대부분 코드 최적화로 해결할 수 있습니다. 메모리 제한을 늘리는 것보다는 효율적인 코드 작성이 근본적인 해결책입니다.

profile
일용직 개발자. freetercoder@gmail.com

0개의 댓글