Blobフィールドを持つテーブルがあります。ときには、このデータの概要ページ(すべてのデータを表示する、バックエンドの通常のSELECT *
ステートメント)を読み込むと、メモリ不足のエラーが発生することがあります - 最新のものが以下に示されています(複数の行に分かれています):Doctrine Blob型のメモリ不足エラー
request.Critical: Uncaught PHP Exception
Symfony\Component\Debug\Exception\OutOfMemoryException: "Error: Allowed memory size of
134217728 bytes exhausted)tried to allocate 1679360 bytes)" at /var/www/html/my_project/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/BlobType.php
line 50 ("exception":"[object]
(Symfony\\Component\\Debug\\Exception\\OutOfMemoryException(code: 0): Error: Allowed memory
size of 134217728 bytes exhausted (tried to allocate 1679360 bytes) at /var/www/html/my_project/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/BlobType.php:50)")
[]
ライン50は、私はこれに対処するにはどうすればよい
48. if (is_string($value)) {
49. $fp = fopen('php://temp', 'rb+');
50. fwrite($fp, $value); // Exception occurs here
51. fseek($fp, 0);
52. $value = $fp;
53. }
のですか?私はまったく同じ問題をオンラインで見つけられませんでした。 fwrite
で発生するメモリ不足の例外に関するその他の問題は、ストリームを使用してデータを書き込むことについて話していますが、これはDoctrineライブラリを迷惑にしてしまいます。他の解決策は、php.ini
のメモリ制限を引き上げることを提案しますが、これは一時的な解決策ではありませんか?すべてのアイデアは役に立ちます
BLOBとして保存するのは何ですか? – svgrafov
@svgrafovこれはPDFです。レコードを1つ追加する必要があります(ただし、レコードにはレコードが1つもありませんが、その場合はnullです)。 – Kvothe
@svgrafov私は実際には、これらをファイルストレージに移動することについて考えるべきだと思います。現在、私はEC2インスタンス上で実行されているWebサーバーを持っており、データベースはオーロラRDSインスタンスです。この設定にS3ストレージバケットを追加して、そこからPDFを配信しますか? – Kvothe