附加模式下fopen的cakeHP内存使用情况


cakePHP memory usage for fopen in append mode

我有一个自定义的CakePHP购物车应用程序,我试图在其中创建一个CSV文件,其中包含每个交易的一行数据。当PHP通过编译MySql数据库中的相关数据来立即创建CSV文件时,我遇到了内存问题。目前,CSV文件包含大约200行数据。

或者,我考虑过在逐段过程中创建CSV,每次使用fopen($mFile.CSV,'a'(进行事务时,都会将一行数据附加到文件中;

我的开发人员说,当CSV文件变得太大时,我仍然会遇到内存问题,因为PHP会将整个文件读取到内存中。是这样吗?当使用追加模式时,PHP会尝试将整个文件读取到内存中吗?如果是,你能推荐一个更好的方法吗?

提前感谢,Ben

我运行了以下脚本几分钟,生成了一个1.4gb的文件,远远超过了php内存限制。我也毫无问题地阅读了文件。如果遇到内存问题,可能是其他原因导致了问题。

$fp = fopen("big_file.csv","a");
for($i = 0; $i < 100000000; $i++)
{
    fputcsv($fp , array("val1","val2","val3","val4","val5","val6","val7","val8","val9"));
}

你不能像这样从数据库导出吗:

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