2017-06-05 184 views
1

我试图使用基于PHPExcel的Maatwebsite/laravel-excel库在Laravel 5.4中将excel文件导入到我的MySQL数据库。将excel文件导入数据库时​​出现超时

我需要导入的文件非常大:至少有50行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 
     ]); 
    } 
}); 

。我需要一个可以在生产服务器上工作的解决方案。

+0

如何运行此命令:从控制台或通过Web服务器?你什么时候为cli或apache更改'max_execution_time'?谢谢。 –

+0

我在我的apache服务器的php.ini文件中更改了max_execution_time。我不想再增加它 - 我需要模拟一个生产环境以确保它能够正常工作。 – PeterInvincible

+0

而你不想在php.ini中更改生产环境中的任何设置。我对吗? –

回答

0

如果要禁用超时只为这个脚本使用:

set_time_limit(0) 

...和监控流程,以确保它不挂。甚至可以把它放到命令中,并使用$ this-> info()输出每次迭代的行号,以便知道它在文件中的位置。

这样,您覆盖任何的.ini的配置可以抱着你回来:)

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

相关问题