我有导出数据到csv文件的功能:
$products = //databse query
foreach($products as $key => $product) {
$products[$key]['example'] = 'example';
.
.
.
}
$csv = new parseCSV();
$csv->output ('products.csv', $products, $labels, $delimiter);
问题在于内存限制,当用户使用许多记录时。 如何在不增加内存限制的情况下处理内存限制?
答案 0 :(得分:3)
你应该逐行写你的csv文件,看看这里的例子: http://php.net/manual/en/function.fputcsv.php
答案 1 :(得分:0)
发现php.net对我有意义。
<?php
$handle = fopen('somefile.csv', 'r');
if ($handle)
{
set_time_limit(0);
//the top line is the field names
$fields = fgetcsv($handle, 4096, ',');
//loop through one row at a time
while (($data = fgetcsv($handle, 4096, ',')) !== FALSE)
{
$data = array_combine($fields, $data);
}
fclose($handle);
}
?>
答案 2 :(得分:0)
以块的形式拆分列表,并使用for循环将它们命名为“products_x.csv”
$start = isset($_GET['start']) ? $_GET['start'] : 0;
for ( $i=$start; $i < $start + $MAX; $i++) {
// add products to csv
}
// csv output and download