【问题标题】:Exporting large quantities of data and memory issues导出大量数据和内存问题
【发布时间】:2013-12-13 03:57:33
【问题描述】:

我没有具体问题。我想听听有关记忆问题的想法和技巧。

假设我有:

  • 产品表上有 100 000 个产品
  • 产品名称表中有 100 000 个产品名称
  • 产品描述表上有 100 000 个产品描述
  • 产品图片表上有200 000张产品图片

我想将这些导出到 Excel 文件。我怎样才能在普通服务器中做到这一点。

我应该查询所有产品和连接的表还是使用限制和偏移量并像 50 000 一样一次?

我是否应该每隔一段时间循环一次mysql结果并将数据保存到一个文件中,然后在最后合并它们?

我应该创建多个较小的 excel 文件并在最后合并它们吗?

所以真正的问题是您使用什么技术来防止内存问题与太大的 mysql 结果、太大的变量大小(将整个 mysql 数据保存到数组)、太大的 excel 变量数据(创建一个巨大的 excel 与创建多个小的并将它们组合起来)。

PS。这些想法不一定与我给你的 excel 示例有关。我想学习如何处理大量数据。

【问题讨论】:

  • 这首先取决于您是要创建一个真正的 Excel BIFF (.xls) 还是 OfficeOpenXML (.xlsx) 文件,或者是一个简单的逗号分隔值 (csv) 文件。足以满足您的需求:如果是后者,那么您在从数据库中读取结果时写入每一行,而不是在内存中构建任何大型数组

标签: php mysql performance excel memory


【解决方案1】:

在您的 phpmyadmin config.inc.php 顶部插入这些行

ini_set('memory_limit','512M'); // set memory to match your available RAM.
set_time_limit(0); // unlimit script time to run

打开浏览器,运行导出到 excel。离开浏览器,直到完成。

如果您想要自定义报告,则只需查询所有数据(如果您的 RAM 剩余空间很大,那没问题。)然后按照您的要求进行报告。在运行之前在代码顶部插入以上行。

【讨论】:

  • 我正在寻找一种使用不同技术解决内存问题的方法。我认为最糟糕的方法是不断做错事,只是为了增加内存限制。
猜你喜欢
  • 2012-06-28
  • 2015-10-30
  • 2021-07-03
  • 1970-01-01
  • 1970-01-01
  • 2019-03-25
  • 2019-12-25
  • 1970-01-01
  • 2014-02-27
相关资源
最近更新 更多