PHPは超大きいCSV形式のExcel表方案を書き出します
シーンと痛み
説明
私たちの作業シーンでは、関連するexcelデータをエクスポートすることがよくあります.多くのデータが必要な場合があります.10 W、100 Wが可能です.
我々の既存のスキームはphpexcelなどのクラスライブラリを直接利用して操作しており、phpexcelのloadロードや書き込みはini_setは依然として最良の案ではない
次にphp出力csvを用いて,データを順次空に出力して出力端末(ブラウザアクセスはブラウザ出力)に出力する.
作成プロセス
説明
キー具体的にコードにコメントする
コード#コード#
結果
テストの説明
我々はデータをシミュレートし,100万(10000*10)のデータを入力した.
ログメモリ使用率
説明
私たちの作業シーンでは、関連する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