从csv文件中分块获取数据并插入数据库


Get data from csv file in chunks and insert into database

我想在laravel上从csv文件中分块读取数据,我正在使用这个库https://github.com/Maatwebsite/Laravel-Excel.我的csv文件有警报数据,我正在使用此代码

 Excel::filter('chunk')->load('sample.csv')->chunk(50, function($results)
    {
        //insert record in databade in chunks
    },FALSE);

上面的代码以块的形式获取数据,但在一段时间后给了我错误Maximum execution time of 30 seconds exceeded,这需要很长时间。我知道如果我会增加max_excution_time,那么这个错误就不会出现,但仍然需要很多时间。我不想从php.ini文件中增加max_excution_time,我想要在一个区块页面后,它应该清除缓存或页面应该刷新或其他更好的东西,并且应该显示记录from-to已导入的状态

您可以通过调用Laravel 中的response()->stream()方法来使用'Symfony'Component'HttpFoundation'StreamedResponse

查看更多:

  1. Api:https://laravel.com/api/5.2/Illuminate/Contracts/Routing/ResponseFactory.html#method_stream

  2. 教程:https://medium.com/@barryvdh/streaming-大csv-files-with-lavel-chunked-queries-4158e484a5a2#.dc49uu24l