製品の保存時にテーブルに製品属性を挿入するオブザーバーを作成しました
<adminhtml>
<events>
<catalog_product_save_after>
<observers>
<Test_price_save_product_data>
<type>singleton</type>
<class>Magetest_test_Model_Observer</class>
<method>saveProductAttr</method>
</Test_price_save_product_data>
</observers>
</catalog_product_save_after>
</events>
</adminhtml>
saveProductAttr() これは、管理者側で製品を保存するときに、別のテーブルに製品属性を挿入します。
今、私は以下のように7000以上の製品を保存するための別のスクリプトを持っています
set_time_limit(0);
ini_set('memory_limit','1024M');
ini_set('display_errors', 1);
error_reporting(1);
require_once 'app/Mage.php';
Mage::setIsDeveloperMode(true);
umask(0);
Mage::app('admin');
Mage::register('isSecureArea', 1);
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$products = Mage::getModel('catalog/product')->getCollection()->addFieldToFilter("type_id",Mage_Catalog_Model_Product_Type::TYPE_SIMPLE);
foreach($products->getData() as $val){
$product = Mage::getModel('catalog/product')->loadByAttribute('sku',$val['sku']);
if ($product)
{
$product->setData('status',1);
$product->save();
}
}
スクリプトを実行すると、製品が 1 つずつ保存されますが、'catalog_product_save_after'オブザーバーはトリガーされません。このオブザーバーを使用して別のテーブルに 7000 個の製品属性をそれぞれ挿入する必要があるためです。
私はこれで間違ったことをしましたか? 親切にアドバイス。