我有一个报告,我必须编写代码才能运行,它必须将一个月的数据编译成一个CSV文件。数据接近112,000行,每行有47个数据单元。CSV文件创建时内存不足
当我尝试写入文件时,内存不足。我认为fflush
可能会这样做,但它似乎并没有。该代码是在PHP中。
$filename = str_replace(array('-',':','_', ' '), '', "export_" . date("m-d-Y H:i:s") . ".csv");
header('Content-Type: text/csv');
header("Content-Disposition: attachment; filename='$filename'");
header('Pragma: no-cache');
header('Expires: 0');
$con=mysqli_connect("localhost","root","changedForSecurity","reports");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM testing");
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
$fp = fopen($filename, 'w');
$i=1;
while($row = mysqli_fetch_array($result)) {
if ($i < 15000) {
fputcsv($fp, $row);
$i++;
} else {
fflush($fp);
$i=1;
fputcsv($fp, $row);
}
}
在你的php.ini中升级你的内存限制 –
我没有看到这个脚本可能会耗尽内存。内存中的数据库永远不会有多行。你不需要调用'fflush()',PHP会在填满时自动刷新缓冲区。脚本的其他部分必须导致问题,而不是您发布的部分。 – Barmar
写入文件之后,脚本的另一部分是下载它的吗?我怀疑内存问题在那里。 – Barmar