PHPは、CSVテーブルに大量のデータをエクスポートします

農業用コードの背景の開発を行うため、データベースへのExcelからデータをインポートする、またはExcelするために、データベースのデータからも派生しているが非常に一般的な操作です。多くの場合、このようなシナリオが発生したデータベースから、ピット発生したエクスポートデータの多くは、テーブルに存在するため、我々は、シーンの最適化のこの種のために道を開く必要があります。

少量のデータをスプレッドシートをExcelにエクスポートされている場合は、一般的には問題ではないくらいの効率化と資源の消費が、データ量が多くなるとPHPを処理するとき、など200,000 500,000ボトルネックの原因となります、いずれかのメモリまたはスクリプトの外に出て実行されます。PHPはより柔軟な、あなたはメソッドが実行されたときにのみ実行するスクリプトのタイムアウトとメモリを変更することができますし、もちろん相対的です。しかし、これは役に立たないで、60千最大の総合XLSラインでサポートされるデータ形式について、とき、彼はクールな行千60になります。

限り、コンピュータが開いているデータをサポートできるようにそれらを満たし続けることができるようになり、行の数に制限をサポートすることができた情報にCSV以降のアクセス。

CSVファイル形式の最大行数は、CSVはG G、行番号の数十、数百のファイル外国の科学的データのダウンロードには天井ではありませんどのくらいの行数十億数十億、基本的には大きなオープンCSVファイル編集ソフトをなし、Excelは、WPSは、OpenOfficeのタイトな編集サポートは最前列1048576を開き、行の数は、より多くのソフトウェアサポートをsnapde、1は、1つのまたは2つの万行、超高速の編集CSVデータを開くことができます。

コード

<?PHP 
公共exportWarehouseManagementToExcel機能()
    { 
        ini_set( 'max_execution_timeに'、300); //設定されたタイムアウトPHPの
        ini_set( 'のmemory_limit'、 '2048M '); // 設定PHP一時メモリのサイズが許す
        $ querySqlは=「SELECT * FROMすべてのデータをエクスポート; // 1 = 1」fsyz_cpInventory 
        $ QueryResultでは=の$ this - > DB->クエリ($ querySql) - > result_array(); 

        //パス
        $ファイル名=「車両配信WMすべてのトラフィックの停滞データ'(Ymd_His')「.CSV DATE。 ''; 
        $ filePathに= 'エクセル/' $ fileNameに;. 
        $インデックスは= 0; 
        $ FPは、fopenを=($ filePathには、 'W'); //生成した一時ファイルの
        chmodコマンド($ filePathに、0777); //実行権限を変更
        // fputcsvハンドルによってファイルに書き込まれたデータ 
        '(= $ヘッダを配列ナンバープレートの番号「」板状「」地域「」状態「」タイムスパン「); //ヘッダを設定します
        fputcsv($ fpは、$ヘッダ) ;
        //エクスポートデータを扱います
        foreachの(キー$ = $ QueryResultではヴァル$&> AS){ 
            foreachの(ヴァル$ $ K AS => $のV){ 
                $ヴァル[$ K]は、V $ = "\ T" ;. 
                IF(インデックス== $ 10000)各書き込み{//メモリデータ1000クリア
                    $インデックス= 0; 
                    ob_flush(); //メモリをクリア
                    フラッシュ(); 
                } 
                $インデックス++; 
            } 
            fputcsv(FPの$、$ヴァル); 
        } 
        ob_flush(); 
        FCLOSE( $ FP); //ハンドル閉じ
        ヘッダを( "のCache-Control:MAX-年齢= 0"); 
        ヘッダ(「コンテンツタイプ:ファイルアプリケーション/ vnd.ms-エクセル;のcharset = UTF -8「);
        ヘッダ(「コンテンツ記述:ファイル転送」); 
        ヘッダ( 'コンテンツ処分:添付ファイル;ファイル名='。ベース名($ファイル名)); 
        ヘッダ( "のContent-Type:テキスト/ CSV"); 
        ヘッダ(「コンテンツ転送エンコード:バイナリ」)。
        ヘッダ( 'のContent-Length:'ファイルサイズ($ filePathに)。); 
        @readfile($ filePathに); //输出文件。
        ($ filePathに)リンク解除。//删除压缩包临时文件
        エコー$ filePathに。
        返します。
    }

重版:

 https://199508.com/post/2064

おすすめ

転載: www.cnblogs.com/yehuisir/p/11521226.html