php導出為excel文件避免內存溢出


 

輕松解決PHPExcel導出10W行超時和內存溢出問題

 

使用了一個輕量級的PHP的Excel操作庫-PHP_XLSXWriter

  • 10w行excel數據導出僅需要5.26秒,再也不用擔心excel導出超過1w行就超時(php.ini中的maxexecutiontime)

  • 內存棧溢出,使用過PHPExcel的同學應該清楚,導出的文件行還沒到1w行就報錯了,原因是單個PHP進程超過了 php.ini配置的memory_limit

  • 解決了csv導出時樣式丟失,長數字變成科學計數法的問題,亂碼的問題

<?php #使用輕量級的excel操作庫PHP_XLSXWriter $timeStart = microtime(true); require_once __DIR__."/../PHP_XLSXWriter/vendor/autoload.php"; $writer = new XLSXWriter(); $sheetHeader = [ '商品id'=>'string', '庫存量'=>'string', '單價'=>'string', '名稱'=>'string', '賣家聯系電話'=>'string'//長數字再也不用擔心會變成科學計數法了 ]; $writer->writeSheetHeader('Sheet1', $sheetHeader);//optional for($i=0; $i<100000; $i++) { $s1 = $i+1; $s2 = mt_rand(0,1000); $s3 = mt_rand(100,999)/10; $s4 = "商品".$s1; $s5 = "13713147601";//隨便輸入的 $writer->writeSheetRow('Sheet1', array($s1, $s2, $s3, $s4, $s5) ); } $writer->writeToFile('goods_info.xlsx'); echo floor((memory_get_peak_usage())/1024/1024)."MB"; echo ""; echo microtime(true) -$timeStart;

源碼地址:https://gitee.com/nodestudy/The-PHP-Best-Practice

本文分享自 https://cloud.tencent.com/developer/article/1480133


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM