【问题标题】:Can't import excel with 2 millions rows mysql laravel?无法导入 200 万行 mysql laravel 的 excel?
【发布时间】:2020-06-04 06:24:44
【问题描述】:

目前无法导入200万行的mysql数据只能导入8500条数据,超过8500条就会出现

" 503 暂停服务 服务器暂时繁忙,稍后再试! "

<?php

namespace App\Imports;
use App\Models\{Datalead,Debitur,Perusahaan,Saldolist};


use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\{ToCollection, WithHeadingRow, WithCalculatedFormulas,WithMultipleSheets };

class DataleadImportSaldolist implements ToCollection, WithHeadingRow, WithCalculatedFormulas,WithMultipleSheets 
{
    /**
    * @param Collection $collection
    */

    public function sheets(): array
    {
        return [
            0 => $this,
        ];
    }
    public function collection(Collection $collection)
    {
        //print("<pre>".print_r($collection,true)."</pre>");
        foreach ($collection as $row) 
        {

                    $saldo = Saldo::create([

                        'Tanggal' => $row['tanggal'],
                        'KodeCab' => $row['kode_cab'],
                        'NamaCab' => $row['nama_cab'],
                        'KodeKLN' =>$row['kodekln'],
                        'SentraKode'=> $row['sentra_code'],
                        'KodeKCP' => $row['kodekcp'],
                        'AccountType' => $row['account_type'],
                        'SubCategory' => $row['sub_category'],
                        'Produk' => $row['produk'],
                        'Peruntukan' => $row['peruntukan'],
                        'Currency' =>  $row['currency'],
                        'Kurs' => $row['kurs'],

                    ]);
        }        
    }
}

【问题讨论】:

  • 503 是 Web 服务器错误,那么 Web 服务器日志报告的错误是什么?
  • 如果你解决了你的服务器问题,你仍然会遇到excel表格的最大行数为1048576的问题
  • 这可能是由于多种原因,包括请求超时或内存溢出。检查您的 PHP 和网络服务器日志是否有错误。另外,考虑在后台作业中运行这样的任务。
  • 我已在我的服务器上请求。导致在 php 中上传的时间只有 2 分钟。如果达到最大次数,它只会让显示服务器日志报告错误 503。

标签: php mysql laravel


【解决方案1】:

正如我看到您使用 foreach 循环一样,阅读有关如何在 Laravel 中使用更少的内存循环处理大量数据集可能是件好事。

这是一篇很棒的文章:https://blackdeerdev.com/laravel-chunk-vs-cursor/

简而言之:the chunk function 可以保持较低的内存使用率。你也可以increase the max exececution time 使用 PHP

【讨论】:

  • 它是否真的需要工匠?,当我尝试时它说错误
  • 我真的不明白你的评论。您不需要运行任何工匠命令。尝试以更智能的方式使用数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2015-04-25
相关资源
最近更新 更多