249建站之家:轻松解决PHPExcel导出文件行10W行超时和内存栈溢出
解决的问题
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 "\n";
echo microtime(true) -$timeStart;
文件目录结构:

推荐
-
-
QQ空间
-
新浪微博
-
人人网
-
豆瓣
