2009-07-18 8 views
0

간단히 말해서 나는 아주 새로운 PHP 코더이며, 코드에서 성능을 향상시킬뿐만 아니라 그 성가신 메모리 누출을 막는 최선의 방법으로 나를 안내 할 수 있는지 궁금합니다. 내 호스트는 APC 등이 설치되어 있지 않으므로 모두 손으로 코딩해야합니다. -_-메모리 누수를 막고 성능을 향상시키는 모범 사례

답변

2

일반적인 메모리 누출 (객체 또는 문자열 삭제를 잊어 버린 것처럼 생각하지 않음) PHP에서는 일반적이지만 리소스 누출은 일반적으로 발생합니다. 나는 문제를 했어 :

  • 데이터베이스 연결 - 당신이 정말로 등/pg_close/mysql_close를 호출해야합니다. 당신이 연결이 끝났을 때. 필자는 PHP 연결 풀링이이 문제를 완화한다고 생각하지만 (그러나 자체적으로 문제가있을 수 있음).

  • 이미지 - 이미지를 열거 나 만들 때 gd2 확장 프로그램을 사용하는 경우 image_destroy이 필요합니다. 그렇지 않으면 영원히 메모리를 차지할 것이기 때문입니다. 이미지는 데이터 크기면에서 큰 경향이 있습니다.

스크립트가 순수 CGI (HTTP 서버 모듈 없음)로 실행되는 경우 스크립트가 종료 될 때 효과적으로 정리됩니다. 그러나 스크립트 실행 중에 메모리 문제가 여전히 남아있을 수 있습니다. 특히 단일 스크립트 실행에서 많은 조작을 수행하는 경우가 흔하지 않은 이미지의 경우 특히 그렇습니다.

0

일반적으로 PHP 스크립트는 메모리를 누설 할 수 없습니다. PHP 런타임은 스크립트의 모든 메모리를 관리합니다. 스크립트 자체는 메모리가 누출 될 수 있지만 PHP 프로세스가 끝나면 다시 사용됩니다. PHP는 주로 HTTP 요청을 처리하는 데 주로 사용되기 때문에 일반적으로 매우 짧은 시간 동안 실행되기 때문에 약간의 메모리가 누출되는 경우에는 문제가되지 않습니다. 따라서 http가 아닌 작업을 위해 PHP를 사용하면 메모리 누수가 정말로 걱정되어야합니다. 성능은 메모리 사용보다 더 중요한 관심사 여야합니다. 코드를 프로파일 링하려면 xdebug과 같은 도구를 사용하십시오.

+0

xdebug를 사용하고 싶지만 내 호스트가 추가 설치를 허용하지 않는다고 언급했지만 감사드립니다. –

+1

xdebug를 프로덕션 환경에 설치하지 않겠습니다. 개발자 컴퓨터에 설치하십시오. – troelskn

+0

스크립트가 종료 된 후 메모리가 회수되지 않는 프로세스에서 누출을 관찰하고 있습니다. PHP는 물론, 가장 가능성이 높습니다. –

관련 문제