我正在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()
線,上述後超過近..\GeneralUtility.php:4427
存儲器中TYPO3\CMS\Core\Utility\GeneralUtility::instantiateClass()
。在我最近的測試中,花了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