因此,基本上,我试图在PHP(Laravel)中解析大型xls / xlsx文件。流程与平时有点不同:
1)我需要从特定行(由用户提供)中获取列标题并以数组形式返回
2)然后我需要将xls文件解析为数组
3)我需要遍历数组,将每个值的键映射到列名(因为输入是变量,而mysql列不是),所以我将例如[someKey => value]更改为[ item => value]每次
4)然后,我使用Laravel的:insert()将数组批量插入数据库中
这基本上是一个api,因此在15k行xls文件上需要相当快。到目前为止,我尝试了两件事,但都遇到了问题:
1)Laravel Excel无法只捕获一行,它会解析整个文件两次,一次返回标题,一次映射值键。
2)Python openpyxl是我用exec()
从Laravel控制器调用的,虽然速度更快,但似乎难以控制,因为数组到特定键的映射变得更加复杂。 / p>
是否有更好/更快的方式来做这样的事情? Laravel不能更改,但其他一切都是公平的游戏。我对输入文件的控制也为零,但是用户必须定义包含标题的行。
它在Digital Ocean液滴,LAMP堆栈,CPU优化的液滴,4 GB / 2 vCPU上运行。它在同一台机器上同时运行(响应)和背面(Laravel)。发生的情况是,在我运行解析时,CPU立即上升到100%,这不是一个大问题,因为它相当稳定,但我只是在寻找一种可能更好/更快的方法,特别是一种方法仅拖移一行,以便我更快地返回标头,然后可能是在数组中映射列名称的更好方法。