首页 > 解决方案 > 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 原因甚至通过增加偏移量来限制偏移量并在循环中运行,它显示相同的执行时间错误。第二个原因,我很难以良好的逻辑结束循环。

寻求帮助。我会立即回复。

标签: phplaravelphpexcel

解决方案


您是否为此使用控制台命令? https://laravel.com/docs/5.6/artisan

如果在控制台操作时遇到内存限制,可以先尝试增加 php 内存限制。

如果这还不够,最后一个选择是将 .csv 分成几部分。但这不应该是必要的,除非您正在处理一个非常大的 .csv(不太可能)。


推荐阅读