PHP では、サーバーのキャッシュを使用して、数百万のデータを含む CSV をすばやくエクスポートできます。今日は、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(['name', 'age', 'email']) ->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 サイトの他の関連記事を参照してください。