How to clear memory in php script?

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 

Chủ Đề