php - 使用fopen时允许的X字节内存大小耗尽

时间:2014-07-16 19:17:48

标签: php database memory fopen

我的代码类似于以下内容:

<?php
ini_set('memory_limit', '2048M');
$dates = Array('14-JUL-14','13-JUL-14','12-JUL-14', ...etc )
$filename = '/home/me/query-output_all.csv';
$fp = fopen($filename, 'w');
foreach ($dates as $currday) {
    $query = "--sql query with large result set";

    //perform query
    $rows = $dbo->query($dbh,$query); //set earlier. dbh = oci_connect()

    //add rows to file
    foreach ($rows as $value) {
        //add date key to $value
        array_unshift($value, $currday);
        fputcsv($fp, $value);
    }
}
fclose($fp); 
?>

当$ dates数组包含大约90个日期时,我收到以下错误:

Fatal error: Allowed memory size of 2147483648 bytes exhausted

经过研究,我认为这是由于$ fp变量变得过大造成的。有没有办法可以写入文件,如上所述,而不必担心这个大小限制? (注意 - 增加memory_limit是一个临时修复,但不是长期的,考虑到我可能会在某个时候查询10+千兆字节的数据。)

0 个答案:

没有答案