대형 저장소의 모든 개체를 처리해야하는 TYPO3 CMS 6.2 Extbase에 확장 기능을 작성하고 있습니다. 내 함수는 약 10,000 개의 객체가 있으면 잘 작동하지만 약 20,000 개 이상의 객체가 있으면 메모리가 부족합니다. 더 큰 저장소를 처리하려면 어떻게해야합니까?프로그램이 메모리가 부족하여 대형 TYPO3 Extbase 저장소를 읽음
$importRecordsCount = $this->importRecordRepository->countAll();
for ($id = 1; $id <= $importRecordsCount; $id++) {
$importRecord = $this->importRecordRepository->findByUid($id);
/* Do things to other models based on properties of $importRecord */
}
프로그램은 위의 findByUid()
라인을 통과 한 TYPO3\CMS\Core\Utility\GeneralUtility::instantiateClass()
..\GeneralUtility.php:4427
근처에서 메모리를 초과한다. 최신 테스트 중에이 오류가 발생하는 데 117 초가 걸렸습니다. 오류 메시지는 다음과 같습니다
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 4194304 bytes) in ... \typo3\sysext\core\Classes\Utility\GeneralUtility.php on line 4448
을가 중요한 경우에, 나는 때문에 나중에 기능의 수행 처리의 일부 @lazy 사용하지 마십시오.
php.ini의'memory_limit'을 128M에서 256M으로 늘리면 문제가 해결됩니다. 내 개발 환경에서. – Andrew