magento soap v1の高速化


10

経験豊富なmagento開発者に複数の質問があります。

  1. magento v1 soap apiの速度を向上させることは可能ですか?データを要求すると、magentoが顧客の住所などの単純な情報を編集するのに1.5秒かかります。

    複数の関連するデータノードをリクエストするには、約5〜7秒のコストがかかります。

    今、私はすでにAJAXリクエストを介してこれらのリクエストを行っているので、ページインターフェースはすばやく読み込まれますが、速度の向上は素晴らしいことです。

  2. または、magento dbから直接関連情報を提供する独自のアプリケーションを作成する方が良いでしょうか?それはdbほど複雑ではなく、直接クエリを実行すると、100秒以内にロードされ、結果が表示されます...

    そのオプションに関して私が持っている唯一の考慮事項は:

    1. magentoがデータベーススキームを更新および変更した場合はどうなりますか?
    2. または、magentoのデータベース設定は比較的安全/下位互換性のあるアップグレードですか?

誰もがこれとその成功または失敗の物語について何か経験がありますか?どうすればよいかを知るためには、情報に基づいた決断が必要です。


1
MySQLやNginxなどはなく、PHPにバインドされている可能性があります。他の店舗と同じです。ストアを高速化すると、APIがフォローされます。ただし、高速化することは決してありません。データフロー/ APIメソッドは関係なく遅いため、カスタム実装は常に、管理性/実装時間/アップグレード性を犠牲にしてパフォーマンスを向上させます。
ベンレッサーニ-ソナッシ2013年

3
いや、それはPHPにバインドされていません...それは信じられないほど物事を遅くしているmagentoの全体の設定です。SOAP APIリクエストの完了には、複数のアイテムとショッピングカートを含む大きなストアビューページをリクエストするよりも時間がかかります。マゼントのデザインは斜めになっています。
Tschallacka 2013年

回答:


8

私はまさにこの問題に広範囲に遭遇し、Magentoオブジェクトを直接操作するだけでそれを回避しました。私はコードの変更やあなたが説明していないことに懸念があると思いますが、私のコードの多くは、古いデータをロードするための使い捨てスクリプトに含まれているので、軽微な懸念でした。Magentoオブジェクトを直接操作することには、SOAP APIを使用する場合よりも内部を少し学習させるという副次的な利点もあります-学習曲線はより急になりますが、何が起こっているのかについては少し知識が増しますそこでは、SOAP APIを使用するだけにこだわっていました。

私たちが試したもう1つのオプションは、Memcachedを使用してデータをキャッシュすることです(または、Redisのようなものでも動作します)。しかし、それははるかに高速にデータを取得するという目標を達成します。これが良いオプションかどうかは、あなたが何をしようとしているのかによります。


まあ、もし私がmagento自体から何かを作ろうとしても、リクエストを処理するためにmagentoを「起動」する必要があるため、速度のメリットはあまり得られません。「変更されない」という理由でSOAP APIが好きですが、最も単純なクエリに応答するのが非常に遅いため、私はそれが嫌いです。より多くのリクエストを処理する必要があるメインサイトでさえ、はるかに高速です。
Tschallacka 2013年

私がやろうとしていることは、magentoを当社のERPソフトウェアにリンクすることです。そのため、いつでも最新のデータにアクセスする必要があります。
Tschallacka 2013年

1
多分-私の場合、インクリメントIDで注文を読み込み、そのデータに基づいてアクションを実行するものを書いていました。SOAP APIでの完全な注文の読み込みは約1.5秒、つまり「生のオブジェクト」形式ではほんの一瞬でした。1回の実行で数百個をロードする場合、私にとっての選択は明らかでした。もう1つの制限は、「magento app」スタイルを実行することにより、同じサーバー上にある必要があることです。私の場合はまったく気になりませんでしたが、覚えておく価値はあります。
マイク

1
すべてを生のオブジェクト形式でどのようにロードしましたか?
Tschallacka 2013年

$order = Mage::getModel('sales/order')->load($order_id);、基本的に。このフォーラムのスレッドには、さらに詳しく説明されている可能性があるスニペットが1つまたは2つあります。magentocommerce.com
Mike

6

SOAP APIの高速化は困難です。常にいくつかの追加のハードウェア(より高速なMySQLサーバー)を投入するか、NginXでストアを実行することができます。これにより、数ミリ秒になると、NginXは大量のhttpリクエストの処理に優れたものになります。ほとんどの呼び出しの応答は毎回異なるため、キャッシュは実際にはそれほど役に立ちません。

Magento Coreモデルを使用して独自のAPIを最初から構築するのが最も高速なソリューションである可能性があります。コードを微調整して、必要なものだけをロードするだけでパフォーマンスを改善できるためです。コアクラスの使用経験から、バージョン1.5と1.7の間でそれほど大きな違いはありません。

編集:忘れました、htaccessまたはphp.iniファイルでgzip出力圧縮をオンにするか、MySQLデータベースがない場合は、同じデータベースを使用するSOAP apiを別のサーバーに移動することを考えればボトルネック


1
mysqlデータベースはボトルネックではありません。ボトルネックはすべての構成ファイルをmagentoで起動し、がらくたのすべての部分をロードし、soap apiをコンパイルして、最後にリクエストを作成し、そのデータをフェッチし、評価し、コンパイルすることを覚えています要求された形式に変換し、形式を検証してから、SOAP接続を介して出力します。...チェックチェックチェックダブルチェックは素晴らしいですが、遅すぎます。最初は問題なく動作しますが、いつか速度を上げる必要があります。
Tschallacka 2013年

Magentoのネイティブキャッシュは、設定ファイルの結合に役立ち、コンパイラを使用してコードを高速化できます。また、PHPアクセラレータ(en.wikipedia.org/wiki/PHP_accelerator)を使用すると、ここでパフォーマンスが向上します。しかし、あなたの場合、MagentoコアAPIを使用する独自のAPIの構築を検討することは価値があります。
Sander Mangel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.