大量の PHP データ (500,000 以上) を 1 分で Excel にエクスポート

慕斯
リリース: 2023-03-10 21:30:02
転載
8486 人が閲覧しました

PHP では、私たちは PHP について多くのことを学びました。皆さんが PHP を使用するためのスキルをどの程度習得しているかわかりません。多くの人は理解できても使用しないと思います。この記事は、皆さんが PHP をより深く使えるように導くことを目的としています。

分析

1. ツール

まず、必要な量を明確にします。エクスポート 50W。次に、Excel 2003 バージョンの最大行数は 65535 行であることは誰もが知っていますが、Excel 2007 バージョンの行数 (1048576 行) は要件を満たすことができるため、使用する必要がある Excel のバージョンは2007 バージョン以降である必要があります。

2. クラス ライブラリ

現在、Excel を処理するために PHP で最も一般的に使用されているクラス ライブラリは PHPExcel です (サンプル テストとさまざまなデータ判定の後に 1w 個のデータをエクスポートしました)処理に 5 ~ 8 分かかりました); インターネット上で PHPOffice という製品も見つけました (これは使用したことがありません。試してみてください。PHPExcel よりも効率的と言われています。ブログ記事を書きます)次回紹介します); csv形式のファイルをエクスポートし、Excelファイルで開くこともできる fputcsv() もあります。

1. タイムアウト

これは直接的なもので、リクエストがタイムアウトになります。スーパーマーケットでは、これほど多くのデータ要求を処理することがよくありますが、このとき、PHP 設定を変更する必要があります: set_time_limit(0)。

2. オーバーフロー

データベースからすべてのデータを取り出してメモリに一度に埋め込みますが、メモリ容量が不足しているだけでなく、サーバーの CPU 構成が不十分な場合も同様です。高くない場合でも、使用率が 100% に達する可能性があり、サーバー カードに負荷がかかります。オーバーフローに関しては、PHP 設定 (ini_set('memory_limit', '1024M')) を変更する必要もあります。

ソリューション

1. PHPExcel を使用してエクスポート

このソリューションを使用して 500,000 個のデータをエクスポートした経験は非常に優れています。テストの結果、これは実行可能であり、サーバーにエクスポートすることもできますが、時間は遅くなり、常にダウンロードされることになります。 php クラス ライブラリを使用する場合は、メモリを節約し、計算を高速化するために、php を最新の php7 バージョンにアップグレードすることをお勧めします

2。csv エクスポート

を使用します。 php クラス ライブラリを使用していない場合は、fputcsv() が最適な方法であり、PHPExcel よりもはるかに優れています。csv ファイルのサイズが小さいため、csv ファイルに保存できるデータの量は大きくても少なくても構いません。 CSV の生成は CPU と時間をあまり消費しませんが、Excel の生成時間はファイル データの量が増加するにつれて増加します。

3. 理想的な解決策

特定の条件に従ってデータを分割し、エクスポートされるデータの量を削減します。たとえば、日付に従ってエクスポートすると、一度にエクスポートできます。 1 週間または 1 日。メモリ オーバーフローと実行タイムアウトを防ぐために、データのセグメント化は間違いなく必要な手順です。

データのループ時や CSV または Excel データ オブジェクトの生成時に、ネストされたループを減らすためにアルゴリズムの最適化を実行します。データベースへのクエリ数を削減するために一度に作成できますが、他のデータを使用する必要がある場合は、事前に対応するデータ構造を生成してください。

4. 最速のソリューション

要件を運用および保守に引き渡し、SQL ステートメントを直接実行してエクスポートします:

SELECT
	*
FROM
	table_name 
INTO OUTFILE 'F:/test.csv' 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n';
ログイン後にコピー

次のこのステートメントを実行すると発生する可能性がありますエラー:

The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
ログイン後にコピー

これは、Mysql の構成権限の問題が原因です。SHOW VARIABLES LIKE '%secure%'; を実行して、secure-file-priv の現在の値を確認できます。 NULL はエクスポートが禁止されていることを意味するため、一度設定する必要があります。 Mysql インストール パスの下の my.ini ファイルで、パスを変更して設定します。そうでない場合は、次の設定を追加します:

secure_file_priv=F:/
ログイン後にコピー

50w データ。すぐにエクスポートされます。このステートメントを作成して、サーバー上のこのファイルのパスを確認し、ダウンロード用にパッケージ化することもできます。

関連する学習ビデオの共有: php ビデオ チュートリアル

###

以上が大量の PHP データ (500,000 以上) を 1 分で Excel にエクスポートの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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