Bug(バグ) #1779
完了日記のデータ量が多いSNSで日記検索を行うとサーバが高負荷状態になる [仕様バグ]
Kiwa Sakai さんが約14年前に追加. 13年以上前に更新.
100%
説明
日記のデータ量が多い状態で日記検索を行うと、サーバに非常に負荷をかけてしまう。
大規模なSNSの運営に対応させるため、改善を行うべき。
改善案¶
- 日記検索の対象期間を管理画面・config で設定できるようにし、対象データを絞る
- そもそも日記検索機能自体を「使用しない」選択が出来るようにする
実装案¶
- 既存の「日記検索機能」のON/OFFを設定できるようにする
- 新規に「日記検索対象期間機能」を追加
- 新規の「日記検索対象期間機能」のON/OFFを設定できるようにする
- 新規の「日記検索対象期間機能」の検索期間を設定できるようにする
- 「設定」は設定ファイルで行えるようにする
実装内容¶
実装案との変更点- 各設定は設定ファイルではなく管理画面で行えるようにする
- 「日記検索機能」「日記検索対象期間機能」の設定は管理画面での日記検索(/pc_backend.php/monitoring/diary)には反映させない
- 「日記検索対象期間機能」の入力は0以上の数値(整数)とする
Yuya Watanabe さんが13年以上前に更新
- ステータス を New(新規) から Pending Review(レビュー待ち) に変更
- 担当者 を Rimpei Ogawa から Yuya Watanabe に変更
- 進捗率 を 0 から 50 に変更
下記のコミットで修正しました。
https://github.com/nise-nabe/opDiaryPlugin/commit/66843eeb76fe64b9b409f39e4e736c223fc0dc28
具体的には,以下の点を修正しました。
・日記検索のON/OFF
・日記検索がOFFの場合にPC/モバイルともに検索窓を表示しない
・日記検索がOFFの場合にPC/モバイルともに検索ページが404を返す
・日記検索対象期間のON/OFF
・日記検索対象期間の設定
・日記検索対象期間がONの場合に検索結果を指定された期間以内の日記で返す
Yuya Watanabe さんが13年以上前に更新
設定関連を管理画面で行えるように修正しました。
https://github.com/nise-nabe/opDiaryPlugin/compare/master...dccdd3bf7aeabe19845c
Rimpei Ogawa さんが13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
- 対象バージョン を v1.3.2 にセット
Yuya Watanabe さんが13年以上前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
コメント内容を反映した修正を行いました。
https://github.com/nise-nabe/opDiaryPlugin/compare/master...e16a88ed
Naoya Tozuka さんが13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
英文の中で、他動詞であるenableを形容詞のように用いるのは誤りです。
有効になっている、という状態を表すのであれば enabled としてください。
Yuya Watanabe さんが13年以上前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
Rimpei Ogawa さんが13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
SnsConfig の設定値取得時にデフォルト値を設定していない箇所があるため、DB上に設定値がない場合にデフォルト値が適用されていない箇所があります。
例えば、 Doctrine::getTable('SnsConfig')->get('op_diary_plugin_search_enable')
としている箇所はDB上に値がない場合に null となり、結果検索機能がデフォルトで使用できない状態になっています。
SnsConfigTable の仕様がいまいちかもしれないですが、呼び出し箇所全てに第2引数のデフォルト値を設定するようにしてください。
Yuya Watanabe さんが13年以上前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
SnsConfigのデフォルト値について指摘部分の修正を行いました。
Yuya Watanabe さんが13年以上前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
- コメント19 入力可能な最小値を設定する
- コメント20 ページャ取得の際にpc_backendについては検索対象期間を反映させない
Rimpei Ogawa さんが13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
管理画面で入力する search_period について、整数以外が入力できる必要はないと思いますので sfValidatorNumber ではなく sfValidatorInteger を使ってください。また、0の入力を許可するのであれば "Please input more than 0." の文言を修正してください。
Yuya Watanabe さんが13年以上前に更新
コメント24の指摘を下記pull requestにて修正しました。
Rimpei Ogawa さんが13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
修正確認しました。
Rimpei Ogawa さんが13年以上前に更新
- ステータス を Pending Testing(テスト待ち) から Pending Review(レビュー待ち) に変更
- 進捗率 を 70 から 50 に変更
更新履歴 33acfb446ccf4ab7aef7fef014954fb0b80c5d40 で適用されました。
Rimpei Ogawa さんが13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
Mutsumi Imamura さんが13年以上前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
テスト完了しました。問題ありません。