API呼び出しで1つの製品を作成するのに時間がかかる理由を誰か知っていますか?
ある顧客では製品に 1 ~ 3 秒かかりましたが、別の顧客では同じコードに 30 秒から 1 分かかりました。
Alan Storm の記事「Scrubbing Bubbles for Magento's SOAP」から入手しましたhttp://alanstorm.com/magento_soap_api_shell_scripts
そのため、レイヤー SOAP または XML-RPC をスキップして、コアで直接呼び出しを使用できます。
更新 (1): ずっと前に (数週間) インデックスが作成された後、はるかに高速になっているのを見ました。でも速すぎない。製品ごとに 6 秒、製品の作成のみに再び 3 秒。残りの 3 秒で、ストック API を更新し、メディア API を追加します。
更新 (2): インデックスは再構築されます (プログラム内で自動的に行われます) が、現在、製品ごとに 40 秒かかります (これはどのように可能であり、webshop は遅くありません)
更新 (3): これはキャッシュの問題でした。キャッシュ (ストレージ キャッシュ) がクリアされるたびに、再び 3 ~ 6 秒かかりました (最初だけは問題ありません。大量の製品があり、毎晩、これはいくつかの新しいものになります)。製品)。
更新 (4): はい、Magmi では非常に高速で、1 時間に 18,000 個の製品が作成され、すべての画像と追加の画像が作成されます (ERP 拡張用の独自の記録が含まれます)。しかし、プラグイン gallery_images のディレクトリに問題があり、動作させるのに最も時間がかかりました。私のプログラムはルート + サブディレクトリから実行されており、Magmi はルート + サブディレクトリを「ルート」として取得するため、Magmi を変更して、存在するかどうかを判断する必要がありました。私は後に自分のことをしなければならなかったので、製品を作成することも例外ではありません(ERP拡張用のレコードを作成します)。
UPDATE(5): Magento API (製品の作成) と Magmi の違いは何ですか? Magmi はデータベースに直接レコードを作成しますが、コア拡張を行う拡張機能が Magento API (製品の作成) でカバーされる可能性がある場合、そのようなことは自分で行う必要があると思います。そのため、Magento API (製品を作成する)より安全に使用できますか?(最初は遅い、通常後、しかしどのバージョンでも安全)
質問: フォーラムで読んだので、これを作成しました。Magmi と Martinez は高速ですが、両方とも問題があり、すべてを実行することはできません。そのため、私は Magmi を製品の更新にのみ使用しており、非常に高速です (Martinez も同様)。しかし、これは本当ですか、それとも通常、マグミやマルティネスでも簡単に製品を作成できますか? (私のプログラムは常に私にとって 2 番目の可能性です)。しかし、これはすべて遅すぎるので、今これを試してみます (Magmi)。
回答: はい、今のところ、製品の作成は Magmi で簡単に行われているようです.. 他の拡張機能のために何が欠けているのかはまだわかりません..
コード:
$model = Mage::getModel('catalog/product_api');
$type = 'simple';
$product_attribute_set_id = '9';
$sku = ($products_array[$p][0]);
$data = array('short_description' => $products_array[$p][3],
'name' => $products_array[$p][1],
'weight' => ((float)str_replace(",", ".", $products_array[$p][16])),
'price' => ((float)str_replace(",", ".", $products_array[$p][7])) * $profit,
'cost' => ((float)str_replace(",", ".", $products_array[$p][8])),
'description' => $products_array[$p][2],
'tax_class_id' => $tax_class_id,
'status' => '1',
'eancode' => $products_array[$p][4],
'afas_sku' => $products_array[$p][0],
'leverancier' => $supplier,
'inhoud_verpakking' => $products_array[$p][0],
'size' => $products_array[$p][13],
'material' => $products_array[$p][15],
'kleur' => $color,
'manufacturer' => $manufacturer,
'delivery' => $delivery,
'pptitleadditional' => $products_array[$p][24],
'meta_title' => $products_array[$p][1] . " | " . $products_array[$p][23] . " | xxxxx.nl",
'meta_description' => "xxx.",
'categories' => array('0' => $cat_new_prod1[(string)( $products_array[$p][0])],
'1' => $cat_new_prod2[(string)( $products_array[$p][0])],
'2' => $cat_new_prod3[(string)( $products_array[$p][0])],
'3' => $cat_new_prod4[(string)( $products_array[$p][0])],
'4' => $cat_new_prod5[(string)( $products_array[$p][0])]
)
);
try {
$new_product_id = $model->create($type,$product_attribute_set_id,$sku,$data);
} catch (Exception $e) { // sku already used
userErrorHandler(E_USER_WARNING, $e->getMessage(), $e->getFile(), $e->getLine(), "");
continue;
}