Magento:根据sku价格更新价格和数量

时间:2013-11-07 05:57:14

标签: php magento import magento-1.7

我有更新价格和QTY的脚本,但它在实时服务器上花费了太多时间。我正在尝试执行脚本4到5个小时但无法完成流程。我还在我的localhost上测试了脚本,需要大约1小时30分钟来更新1400个产品。

请检查我的下面的脚本,并建议我的想法,这样我就可以减少本地和现场的时间。

<?php

require_once 'app/Mage.php';
$app = Mage::app('default');
ini_set('max_execution_time', 0);
$currentStore = Mage::app()->getStore()->getId();
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
umask(0);

$path = ''.$_SERVER['DOCUMENT_ROOT'].'/product_stock_price.csv';
$readfile = file ($path);
$j=0;$k=0;
for ($i=1; $i < count($readfile); $i++ ) {
    $fields = split('"',$readfile[$i]);
    $sku=split(',',$fields[0]);
    $arr=array('sku'=>$sku[0],'stock'=>$fields[1],'price'=>$fields[3]);
    //print_r($arr);
    $sku= $arr['sku'];
    //print_r($sku);die;
    $product = Mage::getModel('catalog/product')->setStoreId(1)->loadByAttribute('sku',$sku);

    if ($product) 
    {
        //echo $product->getPrice(); 
        $product->setWebsiteId(1);
        $product->setStoreId(1);
        $product->setPrice($fields[3]);
        $product->save();

        $productId = $product->getId();
        $stockItem =Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);
        $stockItemId = $stockItem->getId();

        $stockItem->setData('manage_stock', 1);
        $stockItem->setData('qty', $fields[1]);

        $stockItem->save();

       // echo $SKU," Updated: Name: '",(string)$XMLproduct->Name,"', Price: ",$fields[3],", Stock level: ",$fields[1];

        $updated++;
        $j+=1;
    }
    else
    {
        $k+=1;
        echo $sku." product not found.</br>";
    } 
}

echo "Total Row : ".count($readfile)." Proceed row : ".$i." Inserted Row : ".$j." Not Found : ".$k;


?>

请给我一些解决方案。

由于 Jalpesh

1 个答案:

答案 0 :(得分:0)

这个过程太重了,因为它在大目录上运行。 您可以根据需要使用最少的可能连接来激发直接的SQL查询,而不是使用模型/集合。您可以轻松创建sql或只搜索更新qty的查询Magento - update all products inventory with sql