Laravel-excel: [рдкреНрд░рд╢реНрди] рдЖрдпрд╛рдд рдШрдЯрдирд╛ рдХреЗ рдмрд╛рдж

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рджрд┐рд╕ре░ 2018  ┬╖  24рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Maatwebsite/Laravel-Excel

рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ

рд╕рдВрд╕реНрдХрд░рдгреЛрдВ

  • PHP рд╕рдВрд╕реНрдХрд░рдг: 7.2
  • рд▓рд╛рд░рд╡реЗрд▓ рд╕рдВрд╕реНрдХрд░рдг: 5.7
  • рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг: 3.1

рд╡рд┐рд╡рд░рдг

рдореБрдЭреЗ рдЖрдпрд╛рдд рдХреЗ рдмрд╛рдж рдХреА рдШрдЯрдирд╛ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИред рдШрдЯрдирд╛ рдХрднреА рдирд╣реАрдВ рдЬрд▓рддреА рд╣реИред :(
рдЖрдлреНрдЯрд░ рд╢реАрдЯ рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдореИрдВ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ?

рдореИрдВ рджреЛрдиреЛрдВ рд░рдЬрд┐рд╕реНрдЯрд░ рдШрдЯрдирд╛рдУрдВ рдФрд░ рдСрдЯреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдШрдЯрдирд╛рдУрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред

рдореЗрд░рд╛ рдХреЛрдб

namespace App\Imports;

use App\Order;
use App\Order\Address;
use Illuminate\Contracts\Queue\ShouldQueue;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\RegistersEventListeners;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithBatchInserts;
use Maatwebsite\Excel\Concerns\WithChunkReading;
use Maatwebsite\Excel\Concerns\WithCustomCsvSettings;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Events\AfterImport;
use Maatwebsite\Excel\Events\BeforeImport;

class OrderAddressImport implements
    WithHeadingRow,
    ToModel,
    WithBatchInserts,
    WithChunkReading,
    WithCustomCsvSettings,
    ShouldQueue,
    WithEvents
{
    use Importable, RegistersEventListeners;

    protected $order;

    public function __construct(Order $order)
    {
        $this->order = $order;
    }

    /**
     * <strong i="16">@param</strong> array $row
     * <strong i="17">@return</strong> Address
     */
    public function model(array $row)
    {
        $data = ['order_id' => $this->order->id];
        $data = array_merge($data, $row);

        return new Address($data);
    }


    public function batchSize() : int
    {
        return 1000;
    }

    public function chunkSize() : int
    {
        return 5000;
    }

    /**
     * <strong i="18">@return</strong> array
     */
    public function getCsvSettings(): array
    {
        return [
            'delimiter' => ';',
            'enclosure' => '',
            'input_encoding' => 'UTF-8'
        ];
    }

    public static function afterImport(AfterImport $event)
    {
       dd($event);
    }
}

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬрд╝ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ 3.1-рджреЗрд╡) рдХреЛ рдЪрдВрдХ рд░реАрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ/рдмрд╛рдж рдХреЗ рдЖрдпрд╛рдд рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реЛрдЧрд╛ред рдпрд╣ ImportFailed рдИрд╡реЗрдВрдЯ рднреА рдЬреЛрдбрд╝ рджреЗрдЧрд╛ рдЬреЛ рдХрд┐рд╕реА рднреА рдЪрдВрдХ рдЬреЙрдм рдХреЗ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред (https://twitter.com/patrickbrouwers/status/1114166252711415808)

3.1 рд╢рд╛рдЦрд╛ рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ рдФрд░ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрдкрд╡рд╛рдж рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рднреА 24 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореЗрд░реЗ рд╕рд╛рде рднреА рд╡рд╣реА рджрд┐рдХреНрдХрдд рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк WithChunkReading рдЕрдиреБрдмрдВрдз рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ AfterImport рдИрд╡реЗрдВрдЯ рдХреЛ рдХрднреА рднреА рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╣ рдкрд╣рд▓реЗ рдЖрдпрд╛рдд рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рднреА рд╕рд╣реА рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ

рдореИрдВрдиреЗ рдХреЛрдб рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рдирдЬрд╝рд░ рдбрд╛рд▓реА рдФрд░ рдХреЛрдИ рднреА рдХреЛрдб рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдЬреЛ рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ ChunkReader рд╡рд░реНрдЧ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрдЧ рд▓рдЧрд╛ рджреЗрдЧрд╛ред

рдФрд░ рдЬрдм рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдПрдХ рдиреМрдХрд░реА рдХрд╛ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдж рдореЗрдВ рдЖрдпрд╛рдд рд╡рд┐рдзрд┐ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ?

рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╡рд┐рд╖рдп рдХрд╛ рдХреЛрдИ рдЬрд╡рд╛рдм рд╣реИ? :)

рд╣рд╛рдВ, рд╣рдордиреЗ рдЗрд╕реЗ рдПрдХ рдмрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирд╛ рд╣реИред рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

@GlennM рдЗрд╕рдХреЗ рд╕рд╛рде рдмреЛрд▓рддреЗ рд╣реБрдП, рдореИрдВ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдкрд╣рд▓реЗ рдФрд░ рдЖрдлреНрдЯрд░рдЪрдВрдХ рдИрд╡реЗрдВрдЯ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ, рдкреНрд░рдЧрддрд┐ рдХреЗ рдлреНрд░рдВрдЯ рдПрдВрдб рдЧреБрдИ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП ... рдЗрд╕рдХреЗ рд╕рд╛рде рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬреЗрдВ , рдХреБрд▓ рдЧрд┐рдирддреА + рдХреБрд▓ рднрд╛рдЧ + рд╡рд░реНрддрдорд╛рди рдЦрдВрдб (рдХреЗрд╡рд▓ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдореЗрд░реА рдЕрдзрд┐рдХрд╛рдВрд╢ рдлрд╛рдЗрд▓реЗрдВ рдЬреАрдпреВрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИрдВ рд▓реЗрдХрд┐рди рдХрд╛рдлреА рдмрдбрд╝реА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдпрд╣ рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИ" рдПрдХ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ рдкреНрд░реЛрдЧреЗрд╕ рдмрд╛рд░

рдкрд╣рд▓реЗ рдЪрдВрдХ рдФрд░ рдЖрдлреНрдЯрд░рдЪрдВрдХ рдзреНрд╡рдирд┐ рд╕рдВрднрд╡ рд╣реИред

рдкрд╣рд▓реЗ рдЖрдпрд╛рдд/рдЖрдлреНрдЯрд░ рдЖрдпрд╛рдд рдЕрдзрд┐рдХ рдореБрд╢реНрдХрд┐рд▓ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ 2 рдЕрддрд┐рд░рд┐рдХреНрдд рдиреМрдХрд░рд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ, рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рднрд╛рд╡ рдкрдбрд╝реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЛ 2x рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдЧрд╛ред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдиреМрдХрд░реА рдкрд░ рдкрд╣рд▓реЗ рдЖрдпрд╛рдд рдФрд░ рдЖрдЦрд┐рд░реА рдиреМрдХрд░реА рдкрд░ рдмрд╛рдж рдХреЗ рдЖрдпрд╛рдд рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИред

рдиреМрдХрд░рд┐рдпреЛрдВ рдХреЛ рдЦрдВрдбрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЖрдпрд╛рдд/рдЖрдлреНрдЯрд░ рдЖрдпрд╛рдд рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП +1ред рдореИрдВ рдЗрдиреНрд╣реЗрдВ рджреЛ рдиреМрдХрд░рд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдкрд░ рд╣реИрдВ! рдкрд╣рд▓реА рдФрд░ рдЖрдЦрд┐рд░реА рдиреМрдХрд░реА рдкрд░ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдЖрдкрдХрд╛ рд╕реБрдЭрд╛рд╡ рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рднреА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред

AfterImport ShouldQueue рдФрд░ WithChunkReading рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдиреНрд╣реЗрдВ рдХрддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдХрддрд╛рд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдШрдЯрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рд╕рд╛рде:

$ рдЖрдпрд╛рдд-> рдХрддрд╛рд░ ('users.xlsx') -> рд╢реНрд░реГрдВрдЦрд▓рд╛ ([
рдирдпрд╛ NotifyUserOfCompletedImport (рдЕрдиреБрд░реЛрдз () -> рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ()),
]);

рдкреНрд░рддреНрдпреЗрдХ рдХрддрд╛рд░ рдЖрдЗрдЯрдо рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: NotifyUserOfCompletedImport

рдЕрд▓рдЧреБрдорд╛ рд╕реБрдЧреЗрд╕реНрддреЛ?

рдореИрдВ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реВрдБред рдПрдХ рдЬреЙрдм рдЗрдВрдкреНрд▓реАрдореЗрдВрдЯрд┐рдВрдЧ рд╢реЙрд▓реНрдбрдХреНрдпреВ рдмрдирд╛рдХрд░, рдлрд┐рд░ рдЙрд╕рд╕реЗ рдЗрдореНрдкреЛрд░реНрдЯ рдЪрд▓рд╛рдХрд░ рдФрд░ рдЗрдореНрдкреЛрд░реНрдЯ рдЦрддреНрдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЬрд░реВрд░реА рдПрдХреНрд╢рди (рдЬреЛ рдХрд┐ рдЖрдлреНрдЯрд░рдЗрдореНрдкреЛрд░реНрдЯ рдЗрд╡реЗрдВрдЯ рдореЗрдВ рд╣реЛрдЧрд╛) рдХрд░рдХреЗ рдЗрд╕реЗ рд╕реЙрд▓реНрд╡ рдХрд┐рдпрд╛ред рдЖрдпрд╛рдд рдиреЗ рдмреИрдЪ рдЖрд╡реЗрд╖рдг рдФрд░ рдЪрдВрдХ рд░реАрдбрд┐рдВрдЧ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдиреМрдХрд░реА рдореЗрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЙрдкрд░реЛрдХреНрдд рдХрд╛ рдПрдХ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдХрддрд╛рд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред

рдФрд░ рджреВрд╕рд░рд╛ (рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг) рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдХрддрд╛рд░рдмрджреНрдз рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде XLS рдлрд╝рд╛рдЗрд▓реЗрдВ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдХреБрдЫ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдпрд╛рдд рд╡рд░реНрдЧ рдореЗрдВ рд╣реА рдХрдВрдзреЗ рдХреНрдпреВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдорд╛рдирдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

ihave рдПрдХ рд╣реА рд╕рд╡рд╛рд▓ question рдореИрдВ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ .... рдХреГрдкрдпрд╛

@ zxl2006001 @patrickbrouwers рд╕реЗ рдЕрджреНрдпрддрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рд╕рд╛рде рдореИрдВрдиреЗ рдЗрд╕ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХреАред

(new UsersImport)->queue('users.xlsx')->chain([
    new NotifyUserOfCompletedImport(request()->user()),
]); 

рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВ: https://docs.laravel-excel.com/3.1/imports/queued.html#appending -jobs

рд╡рд░реНрддрдорд╛рди рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ:

  1. рдкрд╛рдардХ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдЖрдпрд╛рдд рдХреЛ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреНрдпреЛрдВ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ChunkReader рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рдХрд╛рд▓ рджрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкрдврд╝рдирд╛ред

  2. рдЦрдВрдбрд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЖрдк рдХрд┐рд╕реА рднреА рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреМрдХрд░реА рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ "currentFile" рд╕рдВрдкрддреНрддрд┐ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдХреА рдЙрдЪрд┐рдд рд╕рдлрд╛рдИ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╕рднреА рд░реАрдбрдЪрдВрдХ рдХреЗ рдмрд╛рдж рдЬрдВрдЬреАрд░ рд╡рд╛рд▓реА рдиреМрдХрд░реА рдмрд╛рдж рдореЗрдВ рдЖрдпрд╛рдд рдФрд░ рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рдЕрд╕реНрдерд╛рдпреА рд╕рдлрд╛рдИред

рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрд╕рдлрд▓ рдЖрдпрд╛рддреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХрд╛рд░реНрдп-рдкреНрд░рдгрд╛рд▓реА рд╣реИ? рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдЬреЛ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ рд╣реИ рд▓рд╛рд░реНрд╡рд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдиреМрдХрд░реА рддреНрд░реБрдЯрд┐ рдШрдЯрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ aatwebsiteExcel\Jobs\ReadChunk рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдХреЛрдИ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореИрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдШрдЯрдирд╛ рдХреЛ рдЙрд╕ рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдЬрд┐рд╕реЗ рдореБрдЭреЗ рд╡рд┐рдлрд▓ рдиреМрдХрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЪрд╛рд╣рд┐рдПред

рдЪрдВрдХрд╕рд╛рдЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣рдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ?

рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬрд╝ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ 3.1-рджреЗрд╡) рдХреЛ рдЪрдВрдХ рд░реАрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ/рдмрд╛рдж рдХреЗ рдЖрдпрд╛рдд рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реЛрдЧрд╛ред рдпрд╣ ImportFailed рдИрд╡реЗрдВрдЯ рднреА рдЬреЛрдбрд╝ рджреЗрдЧрд╛ рдЬреЛ рдХрд┐рд╕реА рднреА рдЪрдВрдХ рдЬреЙрдм рдХреЗ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред (https://twitter.com/patrickbrouwers/status/1114166252711415808)

3.1 рд╢рд╛рдЦрд╛ рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ рдФрд░ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрдкрд╡рд╛рдж рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЕрдЧрд░ рдореИрдВ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП database рдХрддрд╛рд░ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЕрдкрдиреЗ рдЖрдпрд╛рдд рд╡рд░реНрдЧ рдкрд░ WithChunkReading рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ AfterImport рдИрд╡реЗрдВрдЯ рдХреЛ рдХрдИ рдмрд╛рд░ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреЗрдЬреА рд╕реЗ рдмрдврд╝рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╡рд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ?

рдореИрдВ AfterImport рдкреНрд░рддреНрдпреЗрдХ рд╕рдлрд▓ рдЖрдпрд╛рдд рдХреЗ рдмрд╛рдж database рдХрддрд╛рд░ рдбреНрд░рд╛рдЗрд╡рд░ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг 3.1 рд╕рд╛рде рджреЛ рдмрд╛рд░ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВ database рдХрддрд╛рд░ рдбреНрд░рд╛рдЗрд╡рд░ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг 3.1 рд╕рд╛рде рдПрдХ рд╕рдлрд▓ рдЖрдпрд╛рдд рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж AfterImport рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдЕрдЧрд░ рдореИрдВ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рд░реЗрдбрд┐рд╕ рдХрддрд╛рд░ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ WithChunkReading рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдХрдИ рдмрд╛рд░ AfterImport рдИрд╡реЗрдВрдЯ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреЗрдЬреА рд╕реЗ

рдпрд╣рд╛рдБ рддреНрд░реБрдЯрд┐ рд▓реЙрдЧ рд╣реИ:

local.ERROR: unlink(/Users/sineld/Code/project/public/uploads/tmp/laravel-excel-qfK6O5aCHxhFXioVayQbLQag5UnFKyxB.xlsx): No such file or directory {"exception":"[object] (ErrorException(code: 0):

рд╡рд╣реА рдЙрд╕рдХреЗ рдмрд╛рдж рдЖрдпрд╛рдд рджреЛ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ рдЖрдлреНрдЯрд░рдЗрдореНрдкреЛрд░реНрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдореЗрдВ рднреА рджреМрдбрд╝ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЗрдВ рджреЛ рдмрд╛рд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред Xdebug рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╢реНрд░реЛрддрд╛ рджреЛ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВ:

рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рддрдп

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

pamekar picture pamekar  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

matthewslouismarie picture matthewslouismarie  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gamevnlc picture gamevnlc  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alejandri picture alejandri  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wwendorf picture wwendorf  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ