長期走行のバルクアップデートを作成する方法
-
16-10-2019 - |
質問
価格と在庫のカタログ更新を作成するためのPHPスクリプトがあります。このスクリプトは、3K Skusを約3K更新する必要があるため、実行にはかなり長い時間がかかる場合があります。
このサイトは共有ホスティングにあるため、すべてのPHP.iniの変更が可能であるわけではありません。
私には3つの問題 /質問があります:
- するべきか シャットダウン サイトまたは私はそれを避けることができますか?
- サーバーのシャットダウンを避けることができれば、CPUを保存して、人々がまともな状態でサイトにアクセスできるようにする必要があります 時間を再検討します
- どうすれば避けることができますか max_execution_time エラー?タスクを小さなチャンクに分割するための提案された戦略はありますか?
解決
あなたの質問に答えるために:
サーバー/サイトをシャットダウンする必要はありません。サプライヤーがいるか、自分の在庫を管理しているかどうかを指定しませんでした。どちらのシナリオでも、スクリプトを使用してファイルが毎日提供されている場合、cronをセットアップして「オフ」時間に実行します。
ピーク以外の時間にスクリプトを実行した場合、問題はないはずです。
適切なファイルを変更する可能性がない場合は、スクリプトを2に分離することを検討してください。在庫の更新については、価格の更新については、もう1つは1つです。
また、次のリンクをすばやく実行し、該当するリンクを実装する必要があります。
http://www.gxjansen.com/101-ways-to-speed-your-magento-e-commerce-website/ http://www.magentocommerce.com/boards/viewthread/36225/
注:3K製品は、共有ホスティング環境で簡単に処理する必要があります。サーバーが遅すぎた場合は、サービスプロバイダーに連絡して、別のサーバーに移動するように依頼してください。
幸運を、
sr
他のヒント
バルク製品の更新プロセスは、製品モデルの更新($product->save()
)多くのオブザーバーを解雇します。スクリプトにコーディングを追加できる場合は、以下に示すこのロジックを追加してください。
1.更新する前に、「マニュアルインデックス作成」へのスイッチインデックスプロセス。更新後、自動インデックスに戻します。
//swich indexer to "manual update" mode
$pCollection = Mage::getSingleton('index/indexer')->getProcessesCollection();
foreach ($pCollection as $process) {
$process->setMode(Mage_Index_Model_Process::MODE_MANUAL)->save();
}
//Your script starts.
//Here is your codes
//which updates collection of products within the loop.
//foreach($collection as $product){
// ...
// $product->save();
// ...
//}
//
//End your custom update script.
//swich indexer to "update on save" mode
$pCollection = Mage::getSingleton('index/indexer')->getProcessesCollection();
foreach ($pCollection as $process) {
$process->setMode(Mage_Index_Model_Process::MODE_REAL_TIME)->save();
}
すべての製品を成功させた後、Magento Admin Panelを介してすべてのインデクサーを再インドする必要があります。
2.製品の属性を更新したい場合(ただし、インベントリ属性ではありません)、このコードも使用します。
Mage::getSingleton('catalog/product_action')
->updateAttributes($arrayOfProductIds, array('some_attribute' =>'some_value'), Mage::app()->getStore()->getId());
上記の2つのスニペットは、スクリプトが速く実行されるのに本当に役立ちます。