Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CSVダウンロード時のメモリ使用量を削減 #52

Merged
merged 1 commit into from
May 22, 2016

Conversation

zenith6
Copy link
Contributor

@zenith6 zenith6 commented May 18, 2016

#51 に関するPRです。

[Download All] チェック時のCSVダウンロード処理に対して、
使用メモリを減らすように変更しています。

  • get_posts() によるデータの一括取得を、分割して取得するように変更。
  • MW_WP_Form_Chart_Controller::get_paged() は常に設定値またはデフォルト値を返すように変更。
  • max_execution_time 対策を追加。

分割時の取得件数は、1ページの表示件数を引き継いで使用するようにしています。
別途設定を設けた方がベストだと思いますが、手抜きしちゃいました><

CSVのヘッダー出力の仕様ですが、
出力範囲内の問い合わせデータに基づいて、カラムを取得するように変更しました。
また1ページ目のみの出力、2ページ目のみの出力でカラムが異なる可能性がありますが、
こちらは旧来の挙動を引き継いでおります。


以下廃案。
1ページ目で取得可能なカラムのみを出力し、
2ページ目以降に出現するカラムは名無しのカラムとして扱うよう実装しています。
一度総なめして正確に取得するかどうか悩みました…
とりあえず実行速度を優先にしています。
このあたりよろしければご判断をお願いできましたら幸いです。

問い合わせデータ

ID 項目名
1 A 1
1 B 1
2 B 2
2 C 2

CSV出力結果

ID A B
1 1 1
2 2 2

@inc2734
Copy link
Owner

inc2734 commented May 19, 2016

ありがとうございます!
僕がメモリの扱いとかに詳しくないので質問なのですが、get_posts() をループで複数回呼び出し、そのたびに wp_cache_flush() させることが使用メモリを減らすためのポイント、ということになりますでしょうか?

1ページ目で取得可能なカラムのみを出力し、
2ページ目以降に出現するカラムは名無しのカラムとして扱うよう実装しています。
一度総なめして正確に取得するかどうか悩みました…

フォーム運用の種類によっては項目が変わることはありえると思いますので、ここはカラム無しにはならないほうが理想です。

時間がとれるときに僕の方でもコードの確認・動作確認したいと思います!

@zenith6
Copy link
Contributor Author

zenith6 commented May 19, 2016

早速のご確認ありがとうございます!

get_posts() をループで複数回呼び出し、そのたびに wp_cache_flush() させることが使用メモリを減らすためのポイント、ということになりますでしょうか?

はいその通りです。
取得分割はピーク使用量を低下させるために、
wp_cache_flush() は投稿データが WP_Object_Cache に蓄積される事への対策で呼び出しています。
WP_Object_Cache::$cachepostsmeta だけ解放できる方法が見付からなかったため全体を解放にしてます。

フォーム運用の種類によっては項目が変わることはありえると思いますので、ここはカラム無しにはならないほうが理想です。

おっしゃられる通りですね!
挙動が変わらないよう変更致します。
実行時間が延びるため、max_execution_time の対策が必要になるかと思います。
set_time_limit(0) を入れれば平気かなと考えます。
これは別PRを立てた方がよろしいでしょうか?

@zenith6
Copy link
Contributor Author

zenith6 commented May 19, 2016

1a767f2 にて、カラムの出力の挙動を従来と同じになるよう修正致しました。
ご都合のよろしい時にでも、ご確認頂けましたら幸いです!

@inc2734 inc2734 merged commit 1a767f2 into inc2734:develop May 22, 2016
@inc2734
Copy link
Owner

inc2734 commented May 22, 2016

Refactoring MW_WP_Form_CSV 88ec314

@inc2734
Copy link
Owner

inc2734 commented May 22, 2016

Update version df04ff0

@zenith6
Copy link
Contributor Author

zenith6 commented May 26, 2016

マージありがとうございます!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants