2013-11-07 2 views
0

У меня есть скрипт для цены обновления и QTY, но на реальном сервере требуется слишком много времени. Я пытаюсь выполнить скрипт на 4-5 часов, но не смог завершить процесс. Я также протестировал скрипт на своем локальном хостинге, для обновления 1400 продуктов требуется около 1 часа и 30 минут.Magento: цена обновления и QTY по цене sku

Пожалуйста, проверьте мой нижеприведенный сценарий и предложите мне идею, чтобы я мог сократить время для местных и жить как.

<?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

+0

Просто установите 'max_execution_time' равным 0 без ограничений. Установка его на 18 триллионов секунд немного глупо. – Anthony

+0

попробуйте magmi, это супер быстро – OSdave

+0

спасибо @ Энтони меняет 'max_execution_time'. – Jalpesh

ответ

0

Процесс слишком тяжелым, так как он работает на большом каталоге. Вместо использования модели/коллекции вы можете запускать прямые SQL-запросы с минимально возможными объединениями по вашему желанию. Вы можете легко создать sql или просто искать запросы, например, обновить qty, на Magento - update all products inventory with sql

+0

Спасибо за ответ, но ваш данный url не имеет способа обновить цену. – Jalpesh

+0

Это был всего лишь один пример того, что вы можете найти свои запросы sql только по поисковому запросу. Мое решение заключалось в том, что вы должны использовать sql-запросы. –

+0

Спасибо за предложение – Jalpesh

Смежные вопросы