Я пишу экспортер продукта magento, который записывает пару атрибутов в файл csv. один атрибут называется «строкой категории», а его метод выглядит следующим образом:
...
foreach($products as $_product) {
...
$productId = $_product->getSku();
$productCategory = getCategoryString($_product['category_ids']);
...
}
...
function getCategoryString($numbers) {
$catString = '';
$catModel = Mage::getModel('catalog/category')->setStoreId(Mage_Core_Model_App::ADMIN_STORE_ID);
$ex = explode(',', $numbers);
foreach ($ex as $i => $e) {
if ($i > 0) {
$catString .= $catModel->load($e)->getName();
if ($i < (count($ex)-1))
$catString .= ' > ';
}
}
$ex = NULL;
$numbers = NULL;
$catModel->unsetData();
unset($catModel);
$catModel = NULL;
return $catString;
}
но после каждой итерации вызов метода стоит около 1 МБ для каждого продукта, а у меня около 9000 продуктов! я не могу очистить переменную $ catModel! строки $ catModel = NULL и unset ($ catModel) не имеют никакого эффекта. Что я делаю неправильно? Как я могу заставить сбросить объект?!