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
posted @   橙子与柠檬  阅读(1087)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示