我的代码类似于以下内容:
<?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+千兆字节的数据。)