2016-01-20 8 views
0

Я использую magento EE 1.14.2.1.Я имею около 50 тыс. Продуктов в базах данных. Мне просто нужен полезный совет по обновлению продуктов.Magento - Должен ли я делать массовое обновление около 5 тыс. В середине ночи или разделить несколько раз в день

Как я упоминал в заголовке, каждый день у меня около 5 тыс. Продуктов нужно обновлять запас и цену. Поэтому, если я сделаю это в полночь, переиндексируйте их все за один раз или включите индекс обновления предприятия cron и обновите продукт во много раз в день (около 100 продуктов за раз). Самое важное, что я согласовал, - это производительность веб-сайта и избежание взаимоблокировки MySQL.

ответ

0

Это вариант для вас. У меня есть сценарий import.php, который я использую для импорта или обновления большого количества продуктов и их атрибутов. Это позволит вам либо обновить, либо создать продукт на основе SKU. Вам нужно будет проверить константы, чтобы увидеть, соответствуют ли они вашему Magento.

Это скрипт для Community Edition, поэтому вам нужно будет протестировать для Enterprise.

<?php 
include_once("app/Mage.php"); 
Mage::app(); 
umask(0); 
Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID)); 

$counter = 0; 

function GetProduct($sku) 
{ 
    global $counter; 
    echo $sku; 
    $p = Mage::getModel('catalog/product'); 
    $productId = $p -> getIdBySku($sku);  
    if($productId) 
    { 
     echo "!"; 
     $p -> load($productId); 
    } 
    else 
    { 
     $p->setTypeId('simple'); 
     $p->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH); 
     $p->setStatus(1); 
     $p->setTaxClassId(7); 
     $p->setWebsiteIDs(array(1)); 
     $p->setStoreIDs(array(1)); 
     $p->setAttributeSetId(4); 
     $p->setSku($sku); 
    } 
    echo "..."; 
    $counter++; 
    echo " ".$counter; 
    return $p; 
} 

function SaveProduct($p) 
{ 
    try 
    { 
     if (is_array($errors = $p->validate())) 
     { 
      $strErrors = array(); 
      foreach($errors as $code=>$error) 
      { 
       $strErrors[] = ($error === true)? Mage::helper('catalog')->__('Attribute "%s" is invalid.', $code) : $error; 
       echo $strErrors[0]; 
      } 
      $this->_fault('data_invalid', implode("\n", $strErrors)); 
     } 
     $p->save(); 
     echo "\n"; 
    } 
    catch (Mage_Core_Exception $e) 
    { 
     $this->_fault('data_invalid', $e->getMessage()); 
    } 
} 


$product = GetProduct('SKU01'); $product->setData('upc', '013051388461'); SaveProduct($product); unset($product); 
$product = GetProduct('SKU02'); $product->setData('special_price', null); $product->setData('special_from_date', null); SaveProduct($product); unset($product); 
$product = GetProduct('SKU03'); $product->setData('cardboard_height_cm', 28.5); $product->setData('cardboard_width_cm', 37); SaveProduct($product); unset($product); 


?> 

Я часто получаю Excel для создания линий, как $product = GetProduct('SKU03'); $product->setData('cardboard_height_cm', 28.5); $product->setData('cardboard_width_cm', 37); SaveProduct($product); unset($product);, а затем просто скопировать и вставить в сценарий. Я могу редактировать перед запуском.

Это намного быстрее, чем импорт CSV, и он вызывает всех правильных наблюдателей.

Просто запустите это из оболочки SSH.