---
title: "Spustenie importu a priebeh — Imports for Laravel | Roundly"
description: "Import ako jeden Laravel job batch idempotentných častí — priebeh, súhrn, výnimky v callbackoch, zrušenie a pokračovanie, zámok a evidencia záznamov."
url: https://roundly-consulting.com/sk/open-source/navody/imports-for-laravel/spustenie-importu
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Imports for Laravel](https://roundly-consulting.com/sk/open-source/navody/imports-for-laravel.md)

# Spustenie importu a priebeh

```php
use RoundlyConsulting\Imports\Enums\RecordAction;

$batch = $session->commit();     // BatchHandle
$batch->status(); $batch->progress(); $batch->summary(); $batch->records(RecordAction::Created);
$batch->isRunning(); $batch->isFinished(); $batch->isRolledBack();   // each re-reads the row
$batch->cancel(); $batch->resume();
```

## Ako import prebieha

- authorize(Commit); relácia musí byť v stave previewed s verziou náhľadu volajúceho a nesmie byť expirovaná (inak 409).
- Zámok presunie reláciu do stavu committing; riadok ImportBatch zaznamená, kto import spustil.
- Jeden Laravel job batch s jednou sekvenčnou reťazou úloh pre časti na imports.queue.\* (sync pri vypnutom fronte). Veľkosť časti = max(commit.chunk\_size, ceil(riadky / commit.max\_chunks)), určená pri náhľade. ImportStarted sa spustí tesne pred odoslaním do frontu; ak ho front odmietne, import okamžite zlyhá (dispatch\_failed), zámok sa uvoľní a výnimka sa vyhodí ďalej.
- Každá časť beží v kontexte vlastníka. Prvá časť každého behu sa znova opýta authorize(Commit) pre toho, kto import spustil — používateľ, ktorý stratil prístup, spôsobí zlyhanie dávky (unauthorized).
- Jedna transakcia na časť. Zamkne riadok dávky a overí, že dávka beží a časť je na rade, takže duplicitné doručenie, opakovanie už zapísanej časti či akákoľvek úloha zastavenej dávky neurobí nič.
- Neplatné a duplicitné riadky sa preskočia; každý ďalší riadok sa znova overí a spáruje s aktuálnymi dátami (reclassified, ak sa to zmenilo). Každý riadok beží v savepointe: váš callback, potom kontroly — záznam je uložený, na spojení importu a v rámci vlastníka.
- Vaše zápisy, evidencia, výsledky riadkov a počítadlo častí sa potvrdia alebo vrátia spolu. Približne jeden dopyt na riadok: riadky evidencie sa vkladajú hromadne po častiach, takže vlastné udalosti Eloquentu modelu evidencie sa nespustia — počúvajte ImportChunkProcessed alebo ImportCompleted.
- Dokončené → completed (ImportCompleted); zlyhané → failed (ImportFailed, dá sa pokračovať). Oboje beží v kontexte vlastníka, nastaví finished\_at a undo\_until a uvoľní zámok.

## Výnimky vo vašich callbackoch

- ImportRowException a ValidationException nechajú zlyhať riadok so svojou správou.
- Porušenie unikátneho indexu vo vašej tabuľke nechá riadok zlyhať ako duplicate\_created\_meanwhile.
- Akákoľvek iná výnimka nechá riadok zlyhať so všeobecnou správou a nahlási sa.
- Chyba súbežnosti databázy alebo strateného spojenia a akýkoľvek throwable, ktorý nie je Exception, sa vyhodí ďalej: časť sa vráti a úloha sa zopakuje (commit.tries, commit.backoff, commit.timeout).

## Vedľajšie účinky

E-maily, úlohy a súbory, ktoré zapíšu callbacky, sú mimo transakcie. Odosielajte ich až po potvrdení transakcie, aby vrátená časť nikdy nič neposlala:

```php
public function create(ImportRow $row, ImportContext $context): Model
{
    $member = Member::create([...$row->attributes(), ...$context->ownerAttributes()]);

    SendWelcome::dispatch($member)->afterCommit();   // never sent for a chunk that rolls back

    return $member;
}
```

## Zrušenie a pokračovanie

cancel() zastaví reťaz — už zapísané riadky zostanú a dajú sa vrátiť. resume() spustí novú dávku od nasledujúcej časti pre zlyhaný alebo zrušený beh; odmietne sa, keď sú súbor alebo pracovná kópia už zmazané. ImportSummary: created, linked, updated, skipped, failed, reclassified, duplicates, invalid a durationSeconds.

## Jeden bežiaci import na vlastníka a importér

Unikátny kľúč zámku na relácii povolí jeden bežiaci import alebo vrátenie na vlastníka a importér; nastaví ho jeden podmienený update, ktorý zároveň zmení stav. Dvojklik na import dostane ImportStateException; iná relácia toho istého vlastníka a importéra dostane ImportAlreadyRunningException (409, s jej uvedením). imports:sweep uvoľní beh bez priebehu počas sessions.stale\_after, ktorého job batch je dokončený, zrušený, zlyháva alebo neexistuje, a každý beh bez aktivity počas sessions.abandon\_after — beh, ktorý je len pomalý, nechá tak. Beh, ktorého vlastník bol zmazaný, sa stále označí ako zlyhaný a jeho zámok sa uvoľní, no nespustí sa žiadna udalosť — nie je vlastník, ktorého by uviedla. Chyba jednej relácie sa nahlási a sweep pokračuje s ostatnými.

## Evidencia: „importované“ pri každom zázname

imported\_records obsahuje jeden riadok na každý záznam, ktorý import vytvoril, prepojil alebo aktualizoval — polymorfný pivot „importované z“. Na čítanie pridajte modelu HasImportSource:

```php
use RoundlyConsulting\Imports\Concerns\HasImportSource;

final class Asset extends Model
{
    use HasImportSource;
}

$asset->importRecords;              // MorphMany<ImportedRecord>
$asset->importBatch();              // ?ImportBatch — the latest batch that wrote it whose undo did not remove it
$asset->wasImported();              // bool
Asset::importedIn($batch->model())->get();
```

Trait len číta. Záznam, ktorý vrátenie ponechalo, sa stále ráta ako importovaný.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/imports-for-laravel.md)
