第一篇文章。我有一个非常特殊的需求,需要使用PHP/MySQL读写非常大(5MB以上)的Excel文件。我已经使用了PHPExcel,虽然它非常优雅,但对于我的需求来说速度太慢,并且使用了太多的PHP内存。目前,我的主机限制了我最多只能使用32M的PHP内存。
我的当前解决方案如下:
导入到数据库中
我使用php-excel reader(http://code.google.com/p/php-excel-reader/)来处理.xls文件 - 在导入大约3000行之前,PHP会耗尽内存。我使用spreadsheet reader(https://github.com/nuovo/spreadsheet-reader)来处理.xlsx文件,到目前为止,我已经尝试了5000行以上,而没有耗尽内存。它非常慢,这使我相信它是在打开和关闭Excel文件,并一次读取一部分数据。
导出
对于少于500行的任何内容,使用PHP Excel效果很好。但速度非常慢,32Mb PHP内存无法处理数百行以上的内容(注:我正在使用缓存,虽然有所帮助,但还不够)
对于超过500行的任何内容,请使用基本的制表符分隔文本。速度非常快,没有行数限制,但没有格式和真正的Excel。
理想情况下,我正在寻找一个全能型解决方案,可以快速读写 .xls 和 .xlsx 文件,而且不会遇到内存问题。我不介意使用商业产品,并愿意支付几百美元购买可行的产品。我已经花费数小时在互联网和这个网站上搜索,但还没有找到合适的方案。
有什么建议吗?
附注:如果有人想看看我如何实现上述解决方案,我很乐意分享代码。
ini_set
来增加内存吗?你是将数据存储在内存中还是立即写入文件中? - deceze.csv
格式吗? :) - Robin Castlin