《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
刚好我今天这里有篇讨论的文章,你可以看看 分享:PHP百万数据级导出excel
我感觉涉及到你说的大量,如果不使用异步导出的话,可以设置不超时,可以固定内存导出(游标读取一行一行插入,不会导致内存溢出),这些都没有问题。不过用户操作这方面就会有点不好了,用户会一直卡在这里等,一直等到导出完成,无法操作其他功能。我个人感觉大数据导出,应该用异步比较合适
我是放入异步的队列,用队列处理器导出的。
可以分页切片查询,比如一次1000条数据 单行追加写入cvs文件流,然后flush输出给浏览器,用户在浏览器上可以看到一直在下载, 低配服务器,单表查询7列,下载文件大小100M的csv文件下载需要 3分钟左右。
xlswriter-docs.viest.me/ @viest大佬写的 相当牛逼,导出一百万轻轻松松
分享:PHP 高性能 Excel 扩展,五百年配方无内存泄漏
瓶颈在于你怎么导出,如果是百万的SQL结果,光结果的组织就需要很多时间了,写excel其实用不了多少时间。
导出 excel 和 csv 差别很大的,关键是如何不爆内存
不想异步的话,就只能按照 @一只码 的方法,导出 csv,而且这种方法在数据量大时,会因为一个很小的网络波动而中断
建议使用js导出,js请求接口,一页一页的合并到csv文件中去,有进度条,可断点续传,只要接口不崩,多少数据都能导出来,无非就是时间问题,建议是专门出导出接口,以最大化利用数据库性能
同步导出,最佳方案
ob
+csv
我的导出是基于一个模板(有样式 在上面填充数据) 所以 楼上说的 csv这些不适用 并且xlswriter 这个扩展 我好像没看到可以读取模板然后填充数据的?