Получение коллекции продуктов через Cron - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть задание cron, где мне нужно получить все простые продукты.Это работает очень хорошо, когда я запускаю скрипт вручную, но когда Cron запускает его, он не может получить продукты.

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

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

Я также проверил, могу ли я получить один продукт, используя обычный Mage::getModel('catalog/product')->load($productId), который работал нормально.

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
try{
  $i = 0;
  $productCollection = Mage::getResourceModel('catalog/product_collection')
    ->addStoreFilter(0)
    ->addAttributeToSelect('entity_id')
    ->addAttributeToSelect('parent_sku')
    ->addAttributeToSelect('qty')
    ->addAttributeToFilter('status', Mage_Catalog_Model_Product_Status::STATUS_ENABLED)
    ->addAttributeToFilter('type_id', array('eq' => 'simple'));


  Mage::log($productCollection->getSelect()->__toString(), null, 'cronlog.log');

  foreach ($productCollection as $product) {
    $this->updateStock($product);
  }

} catch (Exception $e){
  Mage::logException("Exception with aggregating stock");
  throw new Exception($e->getMessage());
}

Mage::app()->cleanCache('catalog_product_view');

1 Ответ

0 голосов
/ 05 декабря 2018

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

Я добавил ini_set('memory_limit','800M'); вверху моего сценария, и это решило мою проблему

...