2

我正在尝试使用基于 PHPExcel 的Maatwebsite/laravel-excel库将 excel 文件导入 Laravel 5.4 上的 MySQL 数据库。

我需要导入的文件非常大:至少 50k 行 100 列,我需要为每一行创建一个数据库条目。

我想我可能在导入过程中遇到了一些问题,所以我开始使用块,但是即使是 1 个块,我也会收到以下错误消息:

超过 180 秒的最大执行时间。

我试图增加max_execution_time变量和内存限制,但我似乎仍然无法完成导入。

这是我正在使用的代码:

Excel::filter('chunk')->load($request->file('source_file')->getRealPath())->chunk(1,function ($results) {
    foreach($results as $row) {
        TaskMeta::create([
         'task_id' => $row['task_id'],
         'col2' => $row['column2'],
         ... etc, rest of the 100 columns ommited for clarity
        ]);
    }
});

顺便说一句,我正在我的 Homestead 环境中进行本地测试。我需要一个也可以在生产服务器上运行的解决方案。

4

1 回答 1

0

如果您只想为此脚本禁用超时,请使用:

set_time_limit(0)

...并监控您的流程以确保它没有挂起。甚至可以将其放入命令中并使用 $this->info() 为每次迭代输出行号,以便您知道它在文件中的位置。

这样你就可以覆盖任何可能阻碍你的 .ini 配置:)

http://php.net/manual/en/function.set-time-limit.php

于 2017-06-05T22:21:58.220 回答