大阪 ホームページ制作 ool > oolog > WEBについて > MW WP Formの問い合わせデータのダウンロードでエラーになる

MW WP Formの問い合わせデータのダウンロードでエラーになる

MW WP Formの問い合わせデータのダウンロードでエラーになる

MW WP FORMを設置し、10000件を超える大量の問い合わせデータをダウンロードしようとしたとき、エラーになるという現象が起きたので、その解消方法のメモ書きです。

環境情報

環境については次の通り。

クライアント側

  • WordPress 6.2
  • テーマ Arkhe 3.6.1 ※子テーマ利用
  • プラグイン MW WP Form 4.4.2

サーバー

  • CPU/メモリ 4core/32GB
  • PHP 8.1(Module)
  • MySQL 5.7

状況

フォームは通常通り動いている(アクセスが集中しているのか、若干遅く感じた)。表示も問い合わせも出来ることを確認済み。

MW WP Formの問い合わせデータから、当該フォームの問い合わせ件数をクリックした先のCSVダウンロードを押すとエラーとなりダウンロードできない。Download Allにチェック済み。

エラー内容

このサイトで重大なエラーが発生しました。対応手順については、サイト管理者のメール受信ボックスを確認してください。

WordPress のトラブルシューティングについてはこちらをご覧ください。

試したこと

表示オプションからページネーションを999にしてダウンロード

問題なくダウンロードできた。それならば、ページネーションのページごとに表示する項目をデフォルトの20から10000やそれ以上に変更できればと考えたが、方法が見つからず断念する。
しかし、データが壊れているわけではないことが確認できたので安心した。

MW WM Formの問い合わせデータを期間でダウンロードできないか検討

特定の日付による期間でダウンロードできないか検討した。
そもそも絞り込みにおいて、月ごとに表示が出来るがフィルタリングがダウンロードに適用されない。

参考にしたのは下の記事
MW WP Formのお問い合わせデータを日付指定でフィルタする
https://qiita.com/ginga_sil/items/ad386aba74d90a25b601

日付と月ごとのフィルタリングがダウンロードに適用されるようになった。ダウンロードもできる。ただ何日から何日までという期間ではないので、もう少し粗くフィルタリングしてダウンロードしたい。

MW WP FORM 月単位絞り込みのCSV出力に関して

こちらのサイトを参考にして、月ごとのフィルタリングとダウンロードを実行した。

月ごとに分割してもエラーがでる。

この時点で、もう問い合わせデータが大量になったときは、フォームを分割する方法しかないかなと諦めかけていました。
例えば、Form Aが5000件超えたら、Form Bのショートコードをフォームのページに埋め込めば、問い合わせのダウンロードは出来るはず。

ただ、運用する側としてはチェックが面倒ですよね。もう一度調べたものを読み直しました。
MW WP FormのGitの#51で同じようなことが議論されています。

CSVダウンロード及びグラフ表示が完了しない #51
https://github.com/inc2734/mw-wp-form/issues/51

さらっと読んでしまって、サーバー側のメモリならアクセスが少なくなったときに正常にダウンロードできるのかなと思っていました。
また、太字のところばかり読んでいたので、メモリ使用量の削減というところばかり注目していました。

欲しかった答えは、最初の文の中にありました。

PHP の設定の memory_limit を増やした場合、リクエストが正常に完了します。

つまり、サーバー側のphp.iniのmemory_limitを変更すれば、CSVダウンロードのリクエストがうまくいきそう。
サーバー側のデフォルトの設定を見ると、memory_limit=128 でした。
2倍の256で失敗したので、無制限にすることにしました。

結論:php.ini の memory_limit=-1 と設定

メモリを増やしたときの問題として、他のアプリのリソースを取ってしまう可能性があるとのことですが、恒常的なものではなく、データをダウンロードするときだけなので問題ないと考えていますが、経過観察は必要と考えています。

カテゴリー : oolog WEBについて ホームページ制作

Area

活動エリア

下記のエリアを中心に活動しています。

大阪府

京都府

兵庫県

  • 尼崎市
  • 伊丹市

奈良県