数据预载& PHP中的内存管理

时间:2009-08-18 03:26:37

标签: php memory

我需要在PHP网页(需要ini_set 1024MB)中进行大数据库预加载,以便以CSV格式导出数据库(数据预先加载到数组中)。我知道这并不总是正确的选择,但事实是我需要这样做,所以这是主要的技术问题:

如何在释放CSV生成后清除所有预加载的数据,以便服务器性能保持最佳状态?

2 个答案:

答案 0 :(得分:4)

我知道你说你需要按照你描述的方式去做,但无论如何我都会抛出这个选项。您是否考虑过使用SELECT INTO OUTFILE语法? MySQL可以为您生成CSV文件(如果您不使用MySQL,可能会找到类似的功能):

SELECT * INTO OUTFILE '/tmp/result.txt'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM test_table;

如果您想要转储文件,可以在此之后执行fpassthru()

如果您无法将整个数据集加载到内存中,那么您可以专门unset()您的阵列,以确保在完成后清除它。但是,正如Havenard所提到的,如果您从网页加载,那么当PHP脚本完成执行时,您的Web服务器将自动清除内存,因为Web线程将关闭PHP环境。

答案 1 :(得分:1)

也许未设置()。但实际上,随着PHP脚本的结束,内存被释放。