在 mysql 数据库中存储非常大的文件

问题描述 投票:0回答:1

我的实现是 laravel,但这通常适用于 php/mysql。

我有一个大文件,一般约为 500MB,我想将其存储在数据库中。如果有帮助的话,该文件本身就是一个 pdf zip 文件。

代码很简单:

    $this->recordRequest->update([
      'data' => file_get_contents($file),
    ]);

我得到的错误是内存不足。允许的内存大小 134217728 字节已耗尽(尝试分配 37456160 字节)。

我正在寻找的是这样的东西:

  1. 一种将数据从 php 流式传输到 mysql 的方法
  2. 一种将数据分块存储的方法

同样,我需要一种向用户呈现数据的方法,最好是通过流式传输来自 mysql 的数据。我还没有尝试过,但也许我可以在 blob 上使用重复的 SUBSTRING() 调用。

未启动

  1. 我意识到我可以将文件存储在文件系统或S3或其他地方,但现在,我需要将它存储在数据库中。
  2. 我无法增加允许的内存大小。我的 max_packet 大约是 15 MB,我也无法更改。
php mysql laravel stream blob
1个回答
0
投票

如何将 zip 文件分割成几个小文件(因为 max_allowed_packet)并使用“LOAD_FILE(file_name)”将它们加载到数据库中?

https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_load-file

© www.soinside.com 2019 - 2024. All rights reserved.