TODO #18371

ブログ記事一覧で記事件数が多いときにエラーになる

Added by 坂口 昌己 over 1 year ago. Updated over 1 year ago.

Status:終了Start date:
Priority:通常Due date:
Assignee:坂口 昌己% Done:

100%

Category:ブログ
Target version:4.0.8

Description

ブログ記事数が多い時に一覧表示を100件などにした時など、
タイムアウトやメモリオーバーで表示できなくなる場合がある。

baserCMS 4.0.5以降で発生を確認しました。

原因は、
https://github.com/baserproject/basercms/commit/424493125a12b97ebfbb39c36c9381f79ccd4a5a
のコミットで recursive = 2に変更になり、
find時に不要なデータを取得してしまっているようです。

  • Ver. 4.0.5 以前 : recursive指定なし(recursive = 0)
    array(
        (int) 0 => array(
            'BlogPost' => array( ... ),
            'BlogCategory' => array( ... ),
            'User' => array( ... ),
            'BlogContent' => array( ... ),
            'BlogComment' => array( ... ),
            'BlogTag' => array( ... ),
        ),
    
        :
    
        (int) xxx => array(
            'BlogPost' => array( ... ),
            'BlogCategory' => array( ... ),
            'User' => array( ... ),
            'BlogContent' => array( ... ),
            'BlogComment' => array( ... ),
            'BlogTag' => array( ... ),
        ),
    )
    

Ver. 4.0.5〜現状: recursive = 2

array(
    (int) 0 => array(
        'BlogPost' => array(
        ),
        'BlogCategory' => array(
            ...
            'BlogPost' => array(
                    (int) 0 => array( ... ),
                            ;
                    (int) xxx => array( ... ),  
            ),
        ),
        'User' => array(
            ...
            'UserGroup' => array( ... ),
            'Favorite' => array( ... ),
        ),
        'BlogContent' => array(
            ...
            'Content' => array( ... ),
            'BlogPost' => array(
                    (int) 0 => array( ... ),
                            ;
                    (int) xxx => array( ... ),
            ),
            'BlogCategory' => array( ... ),
        ),
        'BlogComment' => array( ... ),
        'BlogTag' => array( ... ),
    ),
            :
    (int) xxx => array(
        'BlogPost' => array(
        ),
        'BlogCategory' => array(
            ...
            'BlogPost' => array(
                    (int) 0 => array( ... ),
                            ;
                    (int) xxx => array( ... ),
            ),
        ),
        'User' => array(
            ...
            'UserGroup' => array( ... ),
            'Favorite' => array( ... ),
        ),
        'BlogContent' => array(
            ...
            'Content' => array( ... ),
            'BlogPost' => array(
                    (int) 0 => array( ... ),
                            ;
                    (int) xxx => array( ... ),
            ),
            'BlogCategory' => array( ... ),
        ),
        'BlogComment' => array( ... ),
        'BlogTag' => array( ... ),
    ),
)

※ 追記 : BlogCategoryモデルとBlogContentモデルのアソシエーションでlimit = 10が指定されているのである程度は防げているが、想定外の動作になっていると思われます。


Associated revisions

Revision 9f46a8bb
Added by K.A.Burk over 1 year ago

fix #18371 ブログ記事一覧で記事件数が多いときにエラーになる問題を改善 (#725)

History

#1 Updated by 坂口 昌己 over 1 year ago

  • Description updated (diff)

#2 Updated by 坂口 昌己 over 1 year ago

  • Assignee set to 坂口 昌己

#3 Updated by 江頭 竜二 over 1 year ago

坂口さん、報告ありがとうございます。

プラグイン再度で動的にアソシエーションをする事を考えると、recursive = 2 は外さず、不要なモデルをController側でunbind するやり方で改善したいところです。

#4 Updated by Anonymous over 1 year ago

  • Status changed from 担当 to 解決
  • % Done changed from 0 to 100

更新履歴 basercms|commit:9f46a8bbec468c4359a4a400de5cdf151f8d9b76 で適用されました。

#5 Updated by 江頭 竜二 over 1 year ago

  • Target version set to 4.0.8

#6 Updated by 江頭 竜二 over 1 year ago

  • Status changed from 解決 to 終了

Also available in: Atom PDF