こんにちは、クライアント製品のすべてのバックオーダーと在庫を更新するスクリプトを実行しています。現在、約8700点の商品を取り扱っています。ただし、関数を呼び出してすべてを更新しようとすると、500 内部サーバー エラーにリダイレクトされるようです。
コレクションのカウントを行い、ブレークオフポイントがどこにあるかを確認するために制限を設定しました - 1095.
したがって、1095 を超える製品は失敗するだけです。
Magento Community Edition 1.7.0.2 を使用しています
/// 以下のコード
umask(0);
require_once 'app/Mage.php';
Mage::app('admin');
$collection = Mage::getModel('catalog/product')->getCollection();
# Magento SQL queries
$collection->addAttributeToSelect('*');
$collection->getSelect()->limit(1096);
$collection->addFieldToFilter(array(
array('attribute'=>'preorder', 'eq'=>'1'),
));
echo $collection->count();
die();
foreach ($collection as $product) {
#echo $product->getData('sku')." - ".$product->getData('name')." with preorder status of - ".$product->getData('preorder')."<br/>" ;
$sku = $product->getData('sku');
$_product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
$stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product);
$stock->setBackorders("2");
$stock->setUse_config_backorders("0");
$stock->setIs_in_stock("1");
$stock->save();
echo $product->getData('sku')." - ".$product->getData('name')." with backorder status of - ".$stock->getData('backorders')." - Use config? - ".$stock->getData('use_config_backorders')." is in stock ? - ".$stock->getData('is_in_stock')."<br/>" ;
#die();
}
どんな助けでも大歓迎です。
ありがとうございました、
ジュリアン