-
Notifications
You must be signed in to change notification settings - Fork 657
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ダウンロードでメモリ不足エラー。 #4775
Comments
助言① |
最小限での設定変更でメモリ不足エラーを回避する方法。 monolog.yamlファイルの修正 main: 「type: fingers_crossed」は「action_level」の設定されたレベル以上のエラーが出るまでログが蓄積される。 なので、CSVダウンロード時は、infoレベルの「E_USER_DEPRECATED」が蓄積され続けるためメモリオーバーになる。 ■問題 |
@belltzel |
現在の設定では、エラーを溜めて処理終了後(正常でもエラー中断でも)に溜めたログをファイルに出力されてます。 上記のコメントのようにaction_levelをerrorからinfo(E_USER_DEPRECATEDがinfoレベル)へ変更することで、CSV出力の処理中に「E_USER_DEPRECATED」のエラーがログへ出力(ログを溜めない)されてるので、使用メモリが増えずに正常に処理が終了します。 phpiniでerror_reportingなども設定いじってみましたが、改善ありませんでした。 上記の事からmonologがメモリを食ってる理解で間違いないと思います。 |
@belltzel monologの設定を動的に変更できればよさそうですね。 |
ご対応ありがとうございます!! 受注CSVダウンロードの部分にも入れてみましたが、問題なくCSVのダウンロードが出来ました!! |
@belltzel |
概要(Overview)
受注CSVダウンロードするとデータが途中までしかダウンロードできない。
原因として
ec-cube/src/Eccube/Util/EntityUtil.php
Line 40 in 52f193a
ec-cube/src/Eccube/Util/EntityUtil.php
Line 68 in 52f193a
2か所の「trigger_error」がメモリにログをため込んでいる模様。
処理が終わった時にため込んだログが「var/log/prod/****.log」へ書き込まれる。
テストデータ(受注データ800件)ほどで全件受注CSVをDLした結果、16Mほどのログが出力される。
(DL処理が途中で終わる。)
内容は下記のような感じ。
trigger_errorをコメントアウトすれば、メモリ不足エラーなく正常にCSVダウンロードが出来る。
期待する内容(Expect) or 要望 (Requirement)
■一つ目の案。
非推奨になっている「EntityUtil::isNotEmpty」の利用停止。
「EntityUtil::isNotEmpty」を利用しない判定へ変更。
利用している箇所は以下の箇所。
ec-cube/src/Eccube/Service/CsvExportService.php
Line 320 in 52f193a
ec-cube/src/Eccube/Service/CsvExportService.php
Line 327 in 52f193a
■二つ目の案
「EntityUtil::isNotEmpty」が何度も動作する為、trigger_errorを一度だけ動作させるように変更する。
再現手順(Procedure)
受注データを大量に作成。(自分が確認時は800件程度)
受注CSVダウンロードをする。
CSV出力項目は変更していません。(インストール時から変更なし)
環境 (environment)
関連情報 (Ref)
#4435
The text was updated successfully, but these errors were encountered: