プロジェクト

全般

プロフィール

Enhancement(機能追加・改善) #2535

[optimization] メンバー画像の表示時にmember_imageに対する同じクエリが2度実行される

Youichi Kimura12年以上前に追加. ほぼ12年前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2011-10-20
期日:
進捗率:

100%


説明

Overview (現象)

ホーム画面やメンバー検索などのメンバー画像が表示されるページで、下記のように member_image に対する同一のクエリが2度実行される。

SELECT m.id AS m__id, m.member_id AS m__member_id, m.file_id AS m__file_id, m.is_primary AS m__is_primary, m.created_at AS m__created_at, m.updated_at AS m__updated_at FROM member_image m WHERE (m.member_id = '1') ORDER BY m.is_primary DESC LIMIT 1
SELECT m.id AS m__id, m.member_id AS m__member_id, m.file_id AS m__file_id, m.is_primary AS m__is_primary, m.created_at AS m__created_at, m.updated_at AS m__updated_at FROM member_image m WHERE (m.member_id = '1') ORDER BY m.is_primary DESC LIMIT 1

Causes (原因)

lib/model/doctrine/Member.class.php の 196-204 行目:

  public function getImageFileName()
  {
    if ($this->getImage())
    {
      return $this->getImage()->getFile();
    }

    return false;
  }

メンバー画像のファイル名取得時、上記のように $this->getImage() が2度呼び出されクエリも2回実行される。メンバー画像が設定されていない場合は if ブロック内が実行されないためこの現象は起きない。

Way to fix (修正内容)

Member::getImageFileName() 内で $this->getImage() を1度だけ呼び出すように修正する。

関係しているリビジョン

リビジョン da872384 (差分)
Youichi Kimura12年以上前に追加

fix double call Member::getImage() (fixes #2535)

リビジョン 55bb2ae9 (差分)
Youichi Kimuraほぼ12年前に追加

fix double call Member::getImage() (fixes #2535)

履歴

#1 Youichi Kimura12年以上前に更新

  • ステータスNew(新規) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 da872384f33fd7d4da60125411f6203edf1a11f2 で適用されました。

#2 Youichi Kimura約12年前に更新

  • 対象バージョンOpenPNE 3.7.0 にセット

#3 Shouta Kashiwagiほぼ12年前に更新

  • 対象バージョンOpenPNE 3.7.0 から 252 に変更

#4 Yuya Watanabeほぼ12年前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 対象バージョン252 から OpenPNE 3.8beta1 に変更
  • 進捗率50 から 70 に変更

コードの修正自体は単純であるため,テストは不要であると思います.

しかし, #2698 「OpenPNE3 コアに JSON API を追加する」 で指摘を行ったため, #2698 のチケットのテストが完了したことを本チケットのテスト完了とみなして大丈夫だと思います.

#5 Yuma Sakataほぼ12年前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

テスト不要です。

他の形式にエクスポート: Atom PDF