ホームページ > バックエンド開発 > PHPの問題 > PHP で数百万のデータを CSV にすばやくエクスポートする方法

PHP で数百万のデータを CSV にすばやくエクスポートする方法

醉折花枝作酒筹
リリース: 2023-03-10 22:42:02
転載
3043 人が閲覧しました

PHP では、サーバーのキャッシュを使用して、数百万のデータを含む CSV をすばやくエクスポートできます。今日は、CSV をすばやくエクスポートする方法を説明します。必要な場合は参照してください。

PHP で数百万のデータを CSV にすばやくエクスポートする方法

php は百万レベルのデータ エクスポートを実装します。これを実現するためにサーバーのキャッシュが使用されます。

実装:

1:テスト テーブル、およびテスト データを追加します

1: テスト テーブルを作成します

ここでテスト テーブルを作成しました。フィールドは次のとおりです: id、name、age、email

2 : テスト データを結合します

(1) まずテーブルに複数行のデータを手動で追加します

次に、次のコマンドを実行してデータをバッチで追加します

INSERT INTO test (name,age,email) SELECT name,age,email FROM test;
ログイン後にコピー

上記を実行しますコマンドを複数回実行してデータをテストすると指数関数的に増加し、多くのテストデータを取得できるようになります。

2: PHP は数百万のデータのエクスポートを実装しています (ここでのクエリ コマンドは、Yii に付属のクエリ コマンドです) Framework)

//让程序一直运行
set_time_limit(0);
//设置程序运行内存
ini_set('memory_limit', '128M');
//导出文件名
$fileName = '测试导出数据';
header('Content-Encoding: UTF-8');
header("Content-type:application/vnd.ms-excel;charset=UTF-8");
header('Content-Disposition: attachment;filename="' . $fileName . '.csv"');
//打开php标准输出流
$fp = fopen('php://output', 'a');
//添加BOM头,以UTF8编码导出CSV文件,如果文件头未添加BOM头,打开会出现乱码。
fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF));
//添加导出标题
fputcsv($fp, ['姓名', '岁数', '邮箱']);
$nums = 10000; //每次导出数量
$count = Test::find()->count();
$step = ceil($count/$nums);//循环次数
for($i = 0; $i < $step; $i++) {
    $result = Test::find()
        ->select([&#39;name&#39;, &#39;age&#39;, &#39;email&#39;])
        ->limit($nums)
        ->offset($i * $nums)
        ->asArray()
        ->all();
    foreach ($result as $item) {
        fputcsv($fp, $item);
    }
    //每1万条数据就刷新缓冲区
    ob_flush();
    flush();
}
exit;
ログイン後にコピー

上記のようにテストすると、約 100 万件のデータをエクスポートするのに約 10 秒しかかからず、効率がかなり良いことがわかります

以上がPHP で数百万のデータを CSV にすばやくエクスポートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート