原则 Blob 类型内存不足错误



我有一个表,它有一个Blob字段。有时,在加载此数据的概述页面(显示所有数据,后端通常的SELECT *语句(时,我收到内存不足错误 - 最新的错误如下所示(分为多行以供阅读(:

request.Critical: Uncaught PHP Exception
SymfonyComponentDebugExceptionOutOfMemoryException: "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的内存限制,但这不只是一个临时解决方案吗?任何想法都会有所帮助

问题出在SELECT *中。我非常怀疑你需要所有的桌子。以块为单位显示其中的数据。 分页会有所帮助。

UPD甚至比分页更好的主意 - 将文件视为文件。这意味着将它们存储为文件。并且仅在实体中保留文件名(或其他一些标识符(。

最新更新