PR

カード所持数が1000枚超えている場合覚醒者選択画面でカードが表示されなくなっていた可能性がある問題の修正 #2560

kouho opened this at 2023-01-25T19:22:02; closed

Description

opened by kouho at 2023-01-25T19:22:02; updated 2023-02-01T15:28:42

概要

以下のissueの問題への対応
https://git.dev.d-es.co.jp/gitbucket/jolly/jr-cs-issue/issues/254

カード所持数が1000を超えるとS_GetUserCardDataの

foreach( $sort as $key => $val ){

以下で抜け落ちてしまう。
カードの所持数が1000枚を前提にしていたようなのでdefineで定義している最大所持数に変更。

↓ 対応方針を変更

上記の対応では和田さん指摘の問題があったため対応方針を変更。

S_GetCompositionBase関数をS_GetUserCardData関数を使わない形に。
Compostion-Default.incのページ処理でforeachをカード枚数分回さずに最低限の回数で済むように修正。

こちらの対応ではむしろクエリの実行数が増え処理が重くなってしまったので当初の1000を10000件にする方法で対応

テスト方法、確認した内容

開発環境のuser_no10003のアカウントにて再現

TODO

他にも同様の箇所がないか

kouho add_label at 2023-01-25T19:22:04: レビュー待ち

Comment

#25275 by kouho at 2023-01-25T19:22:28; updated 2023-01-25T19:22:28

@wada
レビューお願いいたします

Comment

#25297 by wada at 2023-01-26T12:13:25; updated 2023-01-26T12:13:25

@kouho
以前、数千種類のリスト表示で時間がかかるため修正した本家PRと、
同じような状態になるのではないかと考えていますが問題ないでしょうか?

本家更新 一部リストの表示処理の変更 jolly/jr-cs-issue#161

Comment

#25316 by kouho at 2023-01-26T19:16:26; updated 2023-01-26T19:16:26

@wada
> 以前、数千種類のリスト表示で時間がかかるため修正した本家PRと、
同じような状態になるのではないかと考えていますが問題ないでしょうか?

指摘の通りの懸念点がありましたので対応の方向を変えました。

そもそもS_GetUserCardDataを使うとどうしても無駄な処理が入ってしまうためS_GetCompositionBaseを修正してS_GetUserCardDataを使わない形に修正しました。

S_GetCompositionBase関数が覚醒以外で他に使われている箇所がなかったため引数を変更しています。
Composition-Default.incの方にはarray_sliceを入れて、ページ分けの無駄なforeachのループ回数を減らしてみています。

Comment

#25357 by wada at 2023-01-30T12:00:51; updated 2023-01-30T12:01:40

@kouho
覚醒者選択ページで、更新前と後でクエリの実行数と処理時間を計測してみると、以下のような結果になりました。
環境や設定ミスの可能性もありますが、1秒程度遅くなっていましたので、処理の確認をお願いします。

#条件
カード所持数: 3938
ページ数: 170
全カード表示、カード体力の高い順、1枚だけカード非表示OFF
変更前は条件を合わせるために、S_GetCompositionBaseの引数`$max`を1000から10000に変更

#変更前(master)
クエリ実行数: 29
処理時間: 1.70 ~ 1.90s

#変更後(fix_composition_card)
クエリ実行数: 35
処理時間: 2.86 ~ 3.02s

Comment

#25460 by kouho at 2023-02-01T15:28:12; updated 2023-02-01T15:28:12

方針を当初のものに戻したため一旦クローズ

kouho close at 2023-02-01T15:28:42: Close

Commit range

base3127b712332da8b99c4dd62d60d2406b4c92e06d
headf3185af872818db9963d5dd1afb76f48b8ecdbfa
base branchjolly/jr-web:develop
head branchjolly/jr-web:fix_composition_card

View commits

Commit details are loaded from Git when a dynamic archive server is running, or can be embedded with --include-commits.
Files changed3 filesView patch
statusfile
modifiedlib/SubFunc.inc
modifiedlib/ajax/composition_default.inc
modifiedlib/public/Composition-Default.inc
Patch body is stored as a separate file to keep this page lightweight.