2012-05-29 2 views
3

저는 내보내기 기능에서 매우 많은 양의 메모리가 필요한 기존 코드가있는 대기업의 개발자입니다. 이를 해결하기 위해 ini_set ('memory_limit', '4G'); 사용.PHP는 2GB가 아닌 4GB로 제한되어 있습니까?

문제는 메모리가 소모되면서 스크립트가 충돌한다는 것입니다. 한계를 2G로 설정하면 스크립트가 끝까지 실행됩니다. 1GB 피크 메모리 사용량에 도달하지도 않습니다.

코드가 버전이 지정되어 나머지 회사와 공유되므로 필자는 제한을 변경할 수 없으며 로컬 설치시 변경하는 것이 번거롭다.

제 질문은 : 무엇이 스크립트가 4GB 한도로 충돌하지만 2GB가 아닌지 만들 수 있습니까?

추신 : 내 설정은 nginx 및 php-fpm으로 데비안을 실행하는 가상 머신입니다. VM에는 4GB RAM이 있습니다 (단,이 점을 변경해도 차이는없는 것 같습니다).


[업데이트]은 64 비트 운영 시스템을 가진 새로운 가상 머신을 작성

및 I는 2GB의 VM에 메모리를 설정하는 경우가 작동한다. (만약 내가 4GB를 사용하지 않습니다). 2GB는 괜찮으므로이 문제를 해결할 것입니다.

+0

ini에서 'maximum_execution_time'이 (가) 변경되었습니다. – jugnu

답변

3

자연스러운 제한 사항 : 일부 또는 두 개의 메모리 페이지를 사용하는 파일 매핑에도 2 또는 4GB의 주소 공간이 사용됩니다.

궁극적 인 해결책은 64 비트 PHP 인터프리터 (가능한 경우 64 비트 시스템으로 전환)를 사용하는 것입니다.

+0

좋은 조언은 64 비트 시스템입니다. 새로운 가상 머신을 만들고 작동하는지 확인하려고 노력할 것입니다. – upsfeup

1

아마도 32 비트 시스템에 있습니까?

VM에 4GB 만 있으면 잘 할당해야합니다.

1

32 비트 시스템에서 4GB는 메모리 공간의 한계입니다. PHP가 4GB 메모리를 얻으려고 할 때 메모리 위반이있을 수 있습니다.

관련 문제