2

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;
  }
4

1 に答える 1

2

Magmi wiki の「Project origins」エントリを参照すると、なぜそんなに時間がかかるのかがわかります。

Magmi Datapump APIは、わずかな変更でスクリプトを適応させるのに最適です

于 2013-03-04T11:17:11.227 に答える