处理内存限制

时间:2011-11-07 11:02:51

标签: php mysql csv

我有导出数据到csv文件的功能:

$products = //databse query

foreach($products as $key => $product) {

$products[$key]['example'] = 'example';
                   .
                   .
                   .
}

$csv = new parseCSV();
$csv->output ('products.csv', $products, $labels, $delimiter);

问题在于内存限制,当用户使用许多记录时。 如何在不增加内存限制的情况下处理内存限制?

3 个答案:

答案 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