Closed zenith6 closed 8 years ago
ありがとうございます!
僕がメモリの扱いとかに詳しくないので質問なのですが、get_posts()
をループで複数回呼び出し、そのたびに wp_cache_flush()
させることが使用メモリを減らすためのポイント、ということになりますでしょうか?
1ページ目で取得可能なカラムのみを出力し、 2ページ目以降に出現するカラムは名無しのカラムとして扱うよう実装しています。 一度総なめして正確に取得するかどうか悩みました…
フォーム運用の種類によっては項目が変わることはありえると思いますので、ここはカラム無しにはならないほうが理想です。
時間がとれるときに僕の方でもコードの確認・動作確認したいと思います!
早速のご確認ありがとうございます!
get_posts() をループで複数回呼び出し、そのたびに wp_cache_flush() させることが使用メモリを減らすためのポイント、ということになりますでしょうか?
はいその通りです。
取得分割はピーク使用量を低下させるために、
wp_cache_flush()
は投稿データが WP_Object_Cache に蓄積される事への対策で呼び出しています。
WP_Object_Cache::$cache の posts
と meta
だけ解放できる方法が見付からなかったため全体を解放にしてます。
フォーム運用の種類によっては項目が変わることはありえると思いますので、ここはカラム無しにはならないほうが理想です。
おっしゃられる通りですね!
挙動が変わらないよう変更致します。
実行時間が延びるため、max_execution_time
の対策が必要になるかと思います。
set_time_limit(0)
を入れれば平気かなと考えます。
これは別PRを立てた方がよろしいでしょうか?
1a767f2faaaabf7d40e60cd150ea2047a7c37056 にて、カラムの出力の挙動を従来と同じになるよう修正致しました。 ご都合のよろしい時にでも、ご確認頂けましたら幸いです!
Refactoring MW_WP_Form_CSV 88ec314b0936e4be425a2b55c6e59630e2e2d2be
Update version df04ff0ebae2a1d9e926ac72d4b94859f4577566
マージありがとうございます!
51 に関するPRです。
[Download All]
チェック時のCSVダウンロード処理に対して、 使用メモリを減らすように変更しています。get_posts()
によるデータの一括取得を、分割して取得するように変更。MW_WP_Form_Chart_Controller::get_paged()
は常に設定値またはデフォルト値を返すように変更。max_execution_time
対策を追加。分割時の取得件数は、1ページの表示件数を引き継いで使用するようにしています。 別途設定を設けた方がベストだと思いますが、手抜きしちゃいました><
CSVのヘッダー出力の仕様ですが、 出力範囲内の問い合わせデータに基づいて、カラムを取得するように変更しました。 また1ページ目のみの出力、2ページ目のみの出力でカラムが異なる可能性がありますが、 こちらは旧来の挙動を引き継いでおります。
以下廃案。 ~~1ページ目で取得可能なカラムのみを出力し、 2ページ目以降に出現するカラムは名無しのカラムとして扱うよう実装しています。 一度総なめして正確に取得するかどうか悩みました… とりあえず実行速度を優先にしています。 このあたりよろしければご判断をお願いできましたら幸いです。~~
問い合わせデータCSV出力結果