中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP大數據量導出到Excel的方法

發布時間:2021-06-25 10:04:51 來源:億速云 閱讀:177 作者:chen 欄目:編程語言

本篇內容主要講解“PHP大數據量導出到Excel的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“PHP大數據量導出到Excel的方法”吧!

分析

1、工具

首先明確我們需要導出的數量50W+,其次我們使用過都知道Excel2003版最大行數是65535行,Excel2007版的行數(1048576行)才能達到我們的要求,所以我們需要使用Excel的版本必須為2007版及以上。

2、類庫

目前最常用的PHP處理Excel的類庫是PHPExcel(經實例測試導出1w條數據,再加上各種數據判斷處理我用了5-8分鐘);我在網上還查到一款叫PHPOffice(這個我沒用過,大家可以嘗試一下,據說效率比PHPExcel要好,等下次再寫篇博文介紹一下);還有一個fputcsv(),導出的是csv格式文件,也可以用Excel文件打開。

1、超時

這個是直接的,請求超時。在這個多的數據請求處理下,超市非常常見,這時我們需要修改PHP的配置:set_time_limit(0)。

2、溢出

我們一次性的把所有數據從數據庫取出填充到內存中,一下不光內存存儲不夠,并且如果服務器CPU配置不高的話使用率一下也能達到100%,會造成服務器卡負載。關于溢出我們也需要修改PHP的配置:ini_set('memory_limit', '1024M')。

解決方案

1、使用PHPExcel導出

使用此種方案一下導出50w+的數據體驗非常的不好,經測試之后是雖說是可行的,服務器上也可以導出,就是時間會慢一些,而且會是一直下載狀態。如果使用php類庫,建議將php升級到最新的php7版本節省內存,且計算速度要快

2、使用csv導出

如果不是用php類庫,那么fputcsv()是最佳方式,這種方式要比PHPExcel好很多;因為csv文件較小,csv文件數據可存放數量可大可小,csv生成不占用大量CPU和時間,而Excel的生成時間隨著文件數據量的增加成而所需時間越多。

3、理想方案

將數據按照某種條件進行分割,減少導出的數據量,例如按照日期進行導出,可一周導出一次或者一天導出一次,數據分割肯定是必須的步驟,防止內存溢出,運行超時;

進行算法優化,在數據循環時,減少嵌套循環,生成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:/

PHP大數據量導出到Excel的方法

50w+的數據你會發現很快就導出了。你也可以寫此此語句,知道此文件在服務器上的路徑,進行打包下載即可。

到此,相信大家對“PHP大數據量導出到Excel的方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

静宁县| 邵东县| 阿拉善右旗| 顺义区| 信丰县| 陵川县| 峨边| 博罗县| 巩义市| 绥化市| 玉门市| 樟树市| 平泉县| 江油市| 龙江县| 淮滨县| 个旧市| 赤峰市| 宣恩县| 瑞丽市| 古交市| 临安市| 临清市| 讷河市| 仙居县| 满洲里市| 连山| 彰化市| 山阳县| 永州市| 咸宁市| 博野县| 会理县| 德清县| 甘肃省| 青神县| 阿巴嘎旗| 体育| 乐陵市| 南充市| 马边|