magento - 通过 Cron 获取产品集合
问题描述
我设置了一个 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');
解决方案
我设法找到了问题的原因。似乎当 cron 自动运行时,脚本内存不足。
我ini_set('memory_limit','800M');
在脚本顶部添加,这解决了我的问题
推荐阅读
- java - 为什么激光线只有一条,什么时候应该有 4 条。为什么它只来自 PlayerShip 而不是来自 EnemyShip?
- arrays - 使用 C 和 evecvp 执行程序参数无法正确转发
- java - 任何 2 名学生之间年龄差异的孩子的最小组数最多为 1
- json - 我的来自 Typicode 的 JSON 服务器在 ReactJS 中更新数据库
- python - 在 Synology NAS 上提供 Python CGI 文件
- nuxt.js - Nuxt.JS - 无法读取未定义的属性“已安装”
- python - pygame.error: File is not a Windows BMP file(问题延续)
- javascript - 通过 QR 阅读器填写表格/输入
- julia - 如何将 ArrayFire 图像转换为 Julia 图像?
- python - 谁能解释这种深度优先搜索的实现?