バージョン選択

フォーラム

メニュー

オンライン状況

47 人のユーザが現在オンラインです。 (38 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 47
もっと...

サイト内検索

質問 > フロント機能 > カテゴリー数が多いと商品一覧が遅い

フロント機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
h_tanaka
投稿日時: 2018/5/8 17:27
対応状況: 解決済
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
カテゴリー数が多いと商品一覧が遅い
EC-CUBE3.0.16

現在、カテゴリーが4階層で、カテゴリー数が3209件登録されています。

この状態で次のように上位のカテゴリーを指定して商品一覧を表示すると、ページが表示されるまでに40秒ほどかかってしまいます。
https://example.com/products/list?category_id=2

デバッグモードで確認したところ、カテゴリーの取得クエリが約1000回も実行されていました。

ソースコードをデバッグして各ステップの処理時間を計測したところ、
src/Eccube/Controller/ProductController.php
の paginate() で40秒ほどかかっていました。

おそらく、
src/Eccube/Repository/ProductRepository.php
の getQueryBuilderBySearchData() において、
$Categories = $searchData['category_id']->getSelfAndDescendants();

の箇所で再帰的にカテゴリーを取得しているためと思われます。

src/Eccube/Entity/Category.php
    public function getDescendants()
    {
        $DescendantCategories = array();

        $max = 10;
        $ChildCategories = $this->getChildren();
        foreach ($ChildCategories as $ChildCategory) {
            $DescendantCategories[$ChildCategory->getId()] = $ChildCategory;
            $DescendantCategories2 = $ChildCategory->getDescendants();    // ★ ここで再帰的に子カテゴリーを取得している
            foreach ($DescendantCategories2 as $DescendantCategory) {
                $DescendantCategories[$DescendantCategory->getId()] = $DescendantCategory;
            }
        }

        return $DescendantCategories;
    }

    public function getSelfAndDescendants()
    {
        return array_merge(array($this), $this->getDescendants());
    }


この箇所のパフォーマンスを改善したいのですが、解決方法わかりますでしょうか?


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
 » カテゴリー数が多いと商品一覧が遅い h_tanaka 2018/5/8 17:27
     Re: カテゴリー数が多いと商品一覧が遅い 468 2018/5/8 17:43
       Re: カテゴリー数が多いと商品一覧が遅い h_tanaka 2018/5/8 17:48
         Re: カテゴリー数が多いと商品一覧が遅い 468 2018/5/8 20:10
           Re: カテゴリー数が多いと商品一覧が遅い h_tanaka 2018/5/9 9:31
             Re: カテゴリー数が多いと商品一覧が遅い h_tanaka 2018/5/10 17:45
               Re: カテゴリー数が多いと商品一覧が遅い 468 2018/5/11 8:14
                 Re: カテゴリー数が多いと商品一覧が遅い h_tanaka 2018/5/11 8:54
                   Re: カテゴリー数が多いと商品一覧が遅い h_tanaka 2018/5/16 13:06
                     Re: カテゴリー数が多いと商品一覧が遅い h_tanaka 2018/5/18 14:15
                       Re: カテゴリー数が多いと商品一覧が遅い h_tanaka 2018/9/28 10:19
     Re: カテゴリー数が多いと商品一覧が遅い nanasess 2018/5/8 18:04
       Re: カテゴリー数が多いと商品一覧が遅い h_tanaka 2018/5/8 18:06

 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,288名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.