我正在寫一個magento產品導出程序,它將幾個屬性寫入一個csv文件。一個屬性被稱爲「類字符串」,其方法是這樣的:magento內存問題,無法取消設置對象
...
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;
}
但每次迭代1MB左右的方法,通話費用爲每個產品後,我有大約9000的產品!我無法清理$ catModel變量! $ catModel = NULL和unset($ catModel)行沒有影響。我究竟做錯了什麼?我該如何強制取消對象?!
不加載在得到收集相同的數據,你在這裏做的對象毫無意義的負荷類別 – 2011-06-02 16:39:47
Magento有加載某些模型(如產品和類別)的內存泄漏。你可能最好把它當成一個整數數組並且從那裏開始工作。 – 2011-06-02 16:54:47
迴應Joseph說,PHP在發佈某些循環對象引用和其他深層嵌套對象鏈時保守,這意味着即使您的主對象正在被釋放,其許多子對象也不會被釋放。任何解開這個的人都不適合與世界分享,所以你是SOL。 – 2011-06-02 17:39:33