PHP中我們了解了那麼多關於PHP的知識,不知道你們對運用PHP的技能掌握多少,我相信很大一部分人會了解但是不會運用知識,那麼不急本篇文章就是帶領大家更深刻的去運用PHP。
分析
#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:/
50w 的資料你會發現很快就導出了。你也可以寫此語句,知道此文件在伺服器上的路徑,進行打包下載即可。
相關學習影片分享:php影片教學
#以上是一分鐘解PHP大資料量(大於50萬)匯出到Excel的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境