My script imports an excel file into a product database to update quantities new products etc....
I am having memory issue and I have tried raising the memory limit to the max[800MB+]. I have tried unsetting the variables in order to release the memory between the loops but I still run out of memory. I have tried setting the timeout to infinite but its definitely a memory issue.
Error msg from log file: Fatal error: Allowed memory size of 851443712 bytes exhausted [tried to allocate 71 bytes]
None of the script is contained in a function. If I create the main for loop inside a function and repeatedly call that function will that help garbage collection and clear up memory? Any help or guidance will be appreciated.
Import Script:
error_reporting[ E_ALL & ~E_NOTICE ];
ini_set['memory_limit', '812M'];
set_time_limit[0];
/* Config Start */
define['BasePath', '/home/xxxxx/public_html'];
define['CfgMagentoPath', BasePath];
define['CfgCategoryMapDBxls', BasePath."/xxxx/Shdddddd.xls"];
define['CfgVenderDBxls', BasePath."/xxxx/xxxxxx.xls"];
define['CfgReportEmail', ""];
/* Config End */
require_once[CfgMagentoPath . '/app/Mage.php'];
Mage::app[];
//$app = Mage::app['default'];
//Mage::app[]->setCurrentStore[Mage_Core_Model_App::ADMIN_STORE_ID];
require_once[BasePath.'/xxxxx/xxxx/libs/mage.func-inc.php'];
require_once[BasePath.'/xxxxx/xxxxx/libs/excel-read.class.php'];
//Alert Arrays
$AAnotmapped = array[];
$AAnewproducts = array[];
$AApriceupdated = array[];
$AAimgerror = array[];
$PriceErrors = array[];
$SkipCat = false;
//Create Mapped Cats - In Magento
$excel = new ExcelReader[CfgCategoryMapDBxls,"UTF-8"];
$CM = $excel->getWorksheetData['Sheet1'];
if[!$SkipCat]{
echo "======== Generating Catagory Maps ===========\n\n";
CatMap_Create[$CM];
echo "======== ============================== ===========\n\n";
}
//Start Item Read
$excel = new ExcelReader[CfgVenderDBxls,"UTF-8"];
$IT = $excel->getWorksheetData['New_DATA'];
$ITcnt = 0;
$ITtotal = count[$IT];
foreach[$IT as $ItemRow]{
$ITcnt++;
$cSKU = $ItemRow['ITEM'];
$cProductName = Clean_Data[$ItemRow['ALTSHORTDESC']];
$cCatName = Clean_Data[$ItemRow['CATEGORY']];
$cManuf = Clean_Data[$ItemRow['MANUFACTURER']];
$cShortDesc = Clean_Data[$ItemRow['SHORTDESC']];
$cLongDesc = Clean_Data[$ItemRow['LONGDESC']];
$cUPC = Prod_GetUPC[$ItemRow['UPC'], $ItemRow['ALTUPC']];
$cStockQty = $ItemRow['QTY'];
$cWeight = Prod_GetWeight[$ItemRow['WEIGHT'], $ItemRow['ALTWEIGHT']];
$cPrice = Prod_FigurePrice[$ItemRow['COST'], $ItemRow['MSRP'], $ItemRow['MAP']];
$cCost = $ItemRow['COST'];
//Locate Catagory Map Magento ID
$mCatId = CatMap_Search[$CM, $ItemRow['CATEGORY']];
//Now Create Product
if[$mCatId > 0 && $cProductName != ""]{
echo date["m.d.y g:i a"]."\t[$ITcnt / $ITtotal] Working On: " . $cProductName . " - SKU: $cSKU\n";
$ProdID = Prod_GetIDfromSKU[$cSKU];
if[$ProdID > 0]{
if[Prod_Update[$ProdID, $cCost, $cStockQty, $cWeight, $cUPC]]{
echo "Updated: $cProductName\n";
$ITindex++;
}
}else{
Prod_Create[$cSKU, $cProductName, $cManuf, $cPrice, $cCost, $cWeight, $cShortDesc, $cLongDesc, $cStockQty, $cUPC, $mCatId];
echo "Created: $cProductName to Catagory: $mCatId\n";
echo "$cShortDesc\n\n";
$ProdID = Prod_GetIDfromSKU[$cSKU];
}
if[$cPrice