PHPは超大きいCSV形式のExcel表方案を書き出します


シーンと痛み
説明
私たちの作業シーンでは、関連するexcelデータをエクスポートすることがよくあります.多くのデータが必要な場合があります.10 W、100 Wが可能です.
我々の既存のスキームはphpexcelなどのクラスライブラリを直接利用して操作しており、phpexcelのloadロードや書き込みはini_setは依然として最良の案ではない
次にphp出力csvを用いて,データを順次空に出力して出力端末(ブラウザアクセスはブラウザ出力)に出力する.
作成プロセス
説明
キー具体的にコードにコメントする
コード#コード#
 $v) {
    $column_name[$i] = iconv('utf-8', 'GBK', $v);
}

//        fputcsv      
fputcsv($fp, $column_name);

$export_data = [];
for ($i = 0; $i < 10; $i++) {
    foreach (range(1, 100000) as $k => $v) {
        $export_data[] = [
            "XXX" . $v, "XXX" . $v, "XXX" . $v, "XXX" . $v, "XXX" . $v, "XXX" . $v, "XXX" . $v, "XXX" . $v, "XXX" . $v, "XXX" . $v
        ];
    }
    foreach ($export_data as $item) {
        $rows = array();
        foreach ($item as $export_obj) {
            $rows[] = iconv('utf-8', 'GBK', $export_obj);
        }
        fputcsv($fp, $rows);
    }

    $export_data = []; //    ,      
}
fclose($fp);

$endTime = microtime(true);
$memoryUse = memory_get_usage();

file_put_contents("11.log", "    :" . convert($memoryUse) . ";   :" . ($endTime - $startTime) . PHP_EOL, 8);

exit(0);

結果
テストの説明
我々はデータをシミュレートし,100万(10000*10)のデータを入力した.
ログメモリ使用率
#     :84.7 MB (88,889,540   )
#            ,                 ,      

    :118.99 kb;   :74.375253915787