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
日付と月ごとのフィルタリングがダウンロードに適用されるようになった。ダウンロードもできる。ただ何日から何日までという期間ではないので、もう少し粗くフィルタリングしてダウンロードしたい。
こちらのサイトを参考にして、月ごとのフィルタリングとダウンロードを実行した。
月ごとに分割してもエラーがでる。
この時点で、もう問い合わせデータが大量になったときは、フォームを分割する方法しかないかなと諦めかけていました。
例えば、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について ホームページ制作