我有一个有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 - 用户需要能够添加一个到每个记录(尽管一些记录没有一个,在这种情况下它是空的)。 – Kvothe
@svgrafov我想实际上我应该考虑将这些移动到文件存储。目前,我有一个在EC2实例上运行的Web服务器,并且该数据库是一个Aurora RDS实例。我将添加一个S3存储桶到这个设置并从那里提供PDFs? – Kvothe