matlab kubeflow django Quartz 自动化部署 状态模式 海思 macos powershell soap react router uiwebview vb6 vue中文 vue钩子函数 后台模板下载 后台模板 网赚教程下载 hadoop源码 mysql倒序 hadoop创建文件夹 docker保存镜像 python最大值 python中的for循环 python定义变量 java编程基础 java基础代码 java读取文件数据 python教程下载 小米5c拆机 r语言和python 图解设计模式 联发科p70 alphacam kmservice eclipse中文版下载 php购物车 混沌世界隐藏英雄密码 jq改变css样式 设备管理器在哪
当前位置: 首页 > 学习教程  > 编程语言

解决PHPExce 导出遇到的各种坑,大批量导出中的代码设置、服务器设置、php设置等各种配置、能导出几个G的表格的方法

2020/11/4 14:54:50 文章标签:

如果我们要用PHPExce 导出1个G的压缩文件,怎么办,按我们能想到的办法,把所有可能的地方考虑进去,目前笔者测试能导出800M 的文件,表格中还有缩略图,时间为15分钟,14分多钟,笔者服务器…

如果我们要用PHPExce 导出1个G的压缩文件,怎么办,按我们能想到的办法,把所有可能的地方考虑进去,目前笔者测试能导出800M 的文件,表格中还有缩略图,时间为15分钟,14分多钟,笔者服务器配置为4核8G内存10M 宽带。导出还好,下载的时候估计是200M 的宽带都能吃完,你有多少宽带他吃多少,吃的越多,速度也越快。
看腾讯云后台监控:下载的时候把10M 宽带都吃完了,而且下载800M 也要10分钟吧,10分钟内其他程序别的什么东西都做不了。所以我们把下载这个操作放到了备用服务器上执行,这个备用服务器专门处理下载的事,保证主服务器不卡。

代码层面首先进行如下设置,

 set_time_limit(0);
 ini_set('memory_limit', '50000M');
 ini_set('max_execution_time', 0);
 ignore_user_abort(true);

以下代码的作用是设置PHPExcel平均下来使用1k/单元格的内存,因此大的文档会导致内存消耗的也很快。单元格缓存机制能够允许PHPExcel将内存中的小的单元格对象缓存在磁盘或者APC,memcache或者Wincache中,尽管会在读取数据上消耗一些时间,但是能够帮助你降低内存的消耗。

cache_in_memory_serialized 方式
单元格会以序列化的方式保存在内存中,这是降低内存使用率性能比较高的一种方案。

$cacheMethod = \PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized;
    \PHPExcel_Settings::setCacheStorageMethod($cacheMethod);

其他 的还有cache_in_memory_gzip 方式等。 cache_in_memory_gzip 与序列化的方式类似,这种方法在序列化之后,又进行gzip压缩之后再放入内存中,这回跟进一步降低内存的使用,但是读取和写入时会有一些慢。

服务器设置:

php-fpm.conf设置

request_terminate_timeout = 0

nginx.conf设置

http { #… fastcgi_read_timeout 100000; #… }

php.ini设置

memory_limit = 12800M

本文链接: http://www.dtmao.cc/news_show_350272.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?