フォームから届いたデータのCSVダウンロードが途中でエラーになる

2021年12月6日 at 15:25

フォーム送信されたデータをCSVダウンロードしたところ、途中でエラーになってしまいました。
ダウンロードしたファイルを見ると584行まではあるのですが、その後に短いHTMLソースがあり、そこに、

予期せぬエラーが発生しました。
この要求の処理中にエラーが発生しました。

と出ています。

管理画面で「ログ」を見ると以下の表示がありました。

Exception Occurred: /home/indigocow24/www/ftsu/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php:2567 Allowed memory size of 134217728 bytes exhausted (tried to allocate 5242880 bytes) (1)

何か、メモリが足りないような感じのように見えるのですが、こういう場合、どうしたら全部のデータ(CSV)をダウンロードできるでしょうか。
方法があればお教えいただければ幸いです。

よろしくお願いします。

+++++++++++++++++++++++
concrete5バージョン 8.5.4
サーバー さくらインターネット・スタンダード
PHP 7.4.19
MySQL 4.9.5
利用ブラウザ Safari

タグ:

Re: フォームから届いたデータのCSVダウンロードが途中でエラーになる

2021年12月6日 at 21:17
CSVダウンロードがエラーになる件を書き込んだものです。
自己解決できましたので、ご報告までに。

ダウンロード時のログに「メモリを使い切った」とありましたので、phpのmemory_limitを上げてみました。
それまでは128Mでしたが、倍の256Mにしたところ、メモリ不足のエラーが出なくなりました。
ただ、ログを見ると「maximum execution timeの120秒をこえた」というメッセージに変わったので、max_execution_timeを増やしたところ、CSVのダウンロードを完了することができました。

エラーログから推測して、自分なりにmemory_limitを増やしてから質問すべきでした。大変失礼しました。お騒がせしました。
 

Re: フォームから届いたデータのCSVダウンロードが途中でエラーになる

2021年12月10日 at 20:25
こんにちは。

おっしゃる通り、CSV出力の際に、PHP に割り当てられたメモリ以上にメモリを使おうとしたためにエラーになってしまったようですね。

もしも CSV ダウンロード済みでバックアップされているのであれば、定期的にフォームの中身を削除されることをお勧めします。

PHP のメモリも、設定ファイルでは無限に増やせるように見えますが、サーバー側の限界もあるので一定以上増やしてもエラーが出続けるようになります。

また、メモリだけではなく、処理にも時間がかかります。この時は max_execution_time を増やすことである程度解決できますが、メモリと同じように限界があります。

結局、フォームの中身を定期的に削除されることをおすすめします。
 

Re: フォームから届いたデータのCSVダウンロードが途中でエラーになる

2021年12月10日 at 21:57
コメントありがとうございます。

今回はなんとか問題を回避できましたが、コメントに記していただいたようにフォームの「掃除」が必要なのですね。
その点については、あまり意識していませんでした。

今後、忘れずにメンテしていきたいと思います。

ありがとうございました。