php - Excel 数据太大而无法解析。执行超时
问题描述
我正在使用 laravel 并使用https://csv.thephpleague.com/来解析 csv。
我的功能类似于
$path = $request->file('import_file')->getRealPath();
$csv = Reader::createFromPath($path, 'r');
$csv->setHeaderOffset(0);
$csv_header = $csv->getHeader();
$sample_data = $csv->fetchOne();
$sample_data = array_values($sample_data);
$records = $reader->getRecords();
$csv_file_id = Csv_data::create([
'csv_filename' => $request->file('import_file')->getClientOriginalName(),
'csv_header' => json_encode($csv_header),
'csv_data' => json_encode($records)
]);
我如何通过处理执行时间限制来解析大型数据集。
好吧,我对这些东西很陌生,所以我要求不要评论像使用这个和那个。到目前为止,时间只是通过尝试这个和那个包而流逝。因此,带有代码片段的解决方案可能会更好。
我也试过,
$stmt = (new Statement())
->offset($offset)
->limit($limit)
;
但没有成功。!st 原因甚至通过增加偏移量来限制偏移量并在循环中运行,它显示相同的执行时间错误。第二个原因,我很难以良好的逻辑结束循环。
寻求帮助。我会立即回复。
解决方案
您是否为此使用控制台命令? https://laravel.com/docs/5.6/artisan
如果在控制台操作时遇到内存限制,可以先尝试增加 php 内存限制。
如果这还不够,最后一个选择是将 .csv 分成几部分。但这不应该是必要的,除非您正在处理一个非常大的 .csv(不太可能)。
推荐阅读
- scala - 如何针对可变和不可变 Map 进行编程?
- r - 计算数据框列中单元格之间的差异
- hbase - 从 hbase 1.2.5 中摆脱 Jetty 6
- excel - 数据透视表切片器未在未受保护的工作表中刷新
- node.js - Typescript 类型 HTTP 请求 Rest API
- video - 如何为 mp4 容器的视频流指定偏移量和查找位置?
- kdb - 如何让tickerplant编写日志文件?
- excel - Excel VBA用户定义类型未定义找不到参考
- javascript - 在 Angular 中测试具有自定义验证器的响应式表单字段
- scrapy - 在 Scrapy 中拥有“设置配置文件”的最简单方法是什么?