PHP では、私たちは PHP について多くのことを学びました。皆さんが PHP を使用するためのスキルをどの程度習得しているかわかりません。多くの人は理解できても使用しないと思います。この記事は、皆さんが PHP をより深く使えるように導くことを目的としています。
分析
まず、必要な量を明確にします。エクスポート 50W。次に、Excel 2003 バージョンの最大行数は 65535 行であることは誰もが知っていますが、Excel 2007 バージョンの行数 (1048576 行) は要件を満たすことができるため、使用する必要がある Excel のバージョンは2007 バージョン以降である必要があります。
現在、Excel を処理するために PHP で最も一般的に使用されているクラス ライブラリは PHPExcel です (サンプル テストとさまざまなデータ判定の後に 1w 個のデータをエクスポートしました)処理に 5 ~ 8 分かかりました); インターネット上で PHPOffice という製品も見つけました (これは使用したことがありません。試してみてください。PHPExcel よりも効率的と言われています。ブログ記事を書きます)次回紹介します); csv形式のファイルをエクスポートし、Excelファイルで開くこともできる fputcsv() もあります。
これは直接的なもので、リクエストがタイムアウトになります。スーパーマーケットでは、これほど多くのデータ要求を処理することがよくありますが、このとき、PHP 設定を変更する必要があります: set_time_limit(0)。
データベースからすべてのデータを取り出してメモリに一度に埋め込みますが、メモリ容量が不足しているだけでなく、サーバーの CPU 構成が不十分な場合も同様です。高くない場合でも、使用率が 100% に達する可能性があり、サーバー カードに負荷がかかります。オーバーフローに関しては、PHP 設定 (ini_set('memory_limit', '1024M')) を変更する必要もあります。
このソリューションを使用して 500,000 個のデータをエクスポートした経験は非常に優れています。テストの結果、これは実行可能であり、サーバーにエクスポートすることもできますが、時間は遅くなり、常にダウンロードされることになります。 php クラス ライブラリを使用する場合は、メモリを節約し、計算を高速化するために、php を最新の php7 バージョンにアップグレードすることをお勧めします
を使用します。 php クラス ライブラリを使用していない場合は、fputcsv() が最適な方法であり、PHPExcel よりもはるかに優れています。csv ファイルのサイズが小さいため、csv ファイルに保存できるデータの量は大きくても少なくても構いません。 CSV の生成は CPU と時間をあまり消費しませんが、Excel の生成時間はファイル データの量が増加するにつれて増加します。
特定の条件に従ってデータを分割し、エクスポートされるデータの量を削減します。たとえば、日付に従ってエクスポートすると、一度にエクスポートできます。 1 週間または 1 日。メモリ オーバーフローと実行タイムアウトを防ぐために、データのセグメント化は間違いなく必要な手順です。
データのループ時や CSV または Excel データ オブジェクトの生成時に、ネストされたループを減らすためにアルゴリズムの最適化を実行します。データベースへのクエリ数を削減するために一度に作成できますが、他のデータを使用する必要がある場合は、事前に対応するデータ構造を生成してください。
要件を運用および保守に引き渡し、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:/
関連する学習ビデオの共有: php ビデオ チュートリアル
###以上が大量の PHP データ (500,000 以上) を 1 分で Excel にエクスポートの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。