Magento - Должен ли я делать массовое обновление около 5k в полночь или несколько раз в день

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

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


person user2306811    schedule 20.01.2016    source источник


Ответы (1)


Вот вариант для вас. У меня есть сценарий 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.

person Enigmativity    schedule 20.01.2016