Сохранение в Magento очень и очень долго - PullRequest
3 голосов
/ 08 сентября 2010

В Magento я пишу несколько небольших скриптов командной строки для таких вещей, как установка нового атрибута для ряда продуктов. Я обнаружил, что для обновления 900 продуктов требуется около 6 часов.

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

Я прилагаю, как я загружаю продукты, если есть что-то, что я могу сделать, чтобы лучше оптимизировать процесс. Любая помощь здесь будет принята с благодарностью.

$product = Mage::getModel('catalog/product')->load($magento_id);
$product->setMadeInUsa(1);
try {
    $product->save();
} catch(Exception $e) {
    echo "ERROR: " . $e->getMessage() . "\n";
}

Код выполняется без ошибок, но это занимает вечность.

Ответы [ 2 ]

4 голосов
/ 02 августа 2011
Mage::getSingleton('catalog/product_action')
            ->updateAttributes(array($product->getId()), $attributesData, $storeId);

Этот код обновляет только те атрибуты, которые вы хотите изменить. Первый параметр - это массив идентификаторов продуктов, второй - массив имен и значений атрибутов, а затем третий - идентификатор магазина, который вы хотите обновить.

Это НАМНОГО быстрее, чем сохранение всей модели.

0 голосов
/ 30 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...