Praktický návod

Jak automatizovat import produktů do e-shopu

Nech import běžet sám, ale nenech ho bez dozoru. Důležité je data ověřit, měřit a umět bezpečně zopakovat běh.

35 minut · XML, CSV a automatizace

Nejdřív stručně

Co automatický import řeší?

Dodavatel ti obvykle pravidelně dává soubor nebo adresu se seznamem produktů. Import ho stáhne, přečte, zkontroluje a zapíše změny do e-shopu bez ručního přepisování.

XML a CSV jsou běžné formáty pro takový datový feed. Samotný formát ale nezaručuje, že data dávají smysl. To musí zkontrolovat tvůj import.

Připrav si

Co rozhodni před první automatizací

Nejdřív nastav pravidla. Až pak napiš příkaz, který je bude opakovat.

  • Ukázkový soubor nebo testovací URL od dodavatele. Nikdy nezačínej na ostrých datech bez možnosti návratu.
  • Jednoznačný identifikátor produktu, například SKU nebo kód dodavatele. Název produktu obvykle nestačí.
  • Rozhodnutí, která data přepisuje dodavatel a která spravuje e-shop. Typicky cena a sklad mohou být z feedu, popis ne.
  • Časové okno pro běh importu a kontakt na někoho, kdo rozumí datům dodavatele.

Kroky 1 až 3

Rozděl import na tři bezpečné části

Každý krok musí být dohledatelný. Když se něco pokazí, chceš vědět kde a u kterého produktu.

1. Stáhni a ověř zdroj

  1. Stahuj feed přes zabezpečené spojení a nastav časový limit. Nečekej neomezeně dlouho na cizí server.
  2. Ulož si datum, velikost souboru a případně jeho kontrolní součet. Později poznáš, jestli přišla nová data.
  3. Ověř, že soubor opravdu obsahuje očekávaný XML nebo CSV formát. Chybovou HTML stránku nesmíš číst jako produktový feed.
  4. Když zdroj neprojde kontrolou, import zastav. Starší správná data jsou lepší než rychle zapsaná špatná.
Oficiální Symfony dokumentace ke stažení přes HTTP

2. Normalizuj a zapisuj po dávkách

  1. Převeď každý řádek nebo položku do vlastního tvaru: externí kód, název, cena, sklad a stav.
  2. Zkontroluj povinná pole, čísla a měnu. Neplatnou položku přeskoč, zaznamenej a pokračuj dál.
  3. Produkt vyhledej podle stabilního externího kódu. Podle výsledku ho vytvoř nebo aktualizuj.
  4. Zapisuj po menších dávkách. Nechceš držet celý velký soubor v paměti ani zablokovat databázi na dlouho.
php bin/console app:products:import --source=/cesta/k/feedu --dry-run
Oficiální Symfony dokumentace ke konzolovým příkazům

3. Naplánuj běh a sleduj výsledek

  1. Příkaz nejprve spouštěj ručně a s režimem dry-run. Až potom ho svěř plánovači úloh, například cronu.
  2. Jeden běh nesmí spustit druhý běh téhož importu. Použij zámek nebo import zařaď do fronty zpráv.
  3. Po skončení zapiš počet nových, změněných, přeskočených a chybných produktů.
  4. Když selže celý běh nebo vzroste počet chyb, pošli upozornění. Ticho není známka, že import funguje.
php bin/console app:products:import --source=https://dodavatel.example/feed.xml
Oficiální Symfony dokumentace k práci na pozadí

Krok 4

Ověř import na malém vzorku

Nejdřív si projdi několik položek ručně. Potom můžeš pustit celý feed s mnohem větší jistotou.

  1. Spusť dry-run

    Příkaz má ukázat, co by vytvořil nebo změnil, ale nemá zapisovat do databáze. Tenhle režim se hodí i při řešení chyb.

    php bin/console app:products:import --source=/cesta/k/feedu --dry-run
  2. Zkontroluj tři různé produkty

    Vyber nový produkt, změněný produkt a položku s prázdnou hodnotou. Porovnej kód, cenu, sklad a viditelnost v e-shopu.

  3. Spusť import podruhé

    Se stejným feedem by druhý běh neměl vytvářet duplicity. Jen případně potvrdit, že už jsou data aktuální.

    php bin/console app:products:import --source=/cesta/k/feedu

Když to zlobí

Nejčastější chyby

Feed se stáhne, ale není to očekávaný soubor

Dodavatel mohl vrátit přihlašovací stránku, chybovou stránku nebo prázdný obsah. Kontroluj HTTP stav, typ obsahu, velikost a první chybu parseru.

Import vytváří duplicity

Příčina bývá v nestabilním identifikátoru. Produkt propojuj trvalým externím kódem a v databázi mu dej jedinečné omezení.

Jeden chybný produkt zastaví celý běh

Chybu konkrétní položky zaznamenej a pokračuj. Zastav celý import jen tehdy, když je vadný zdroj nebo nelze bezpečně určit, co se má zapsat.

Dva importy běží najednou

Přidej zámek pro celý běh. Druhý proces má počkat nebo skončit s jasnou zprávou, ne zapisovat souběžně tytéž produkty.

Hotovo

Import může pracovat samostatně.

Teď ho nech běžet pravidelně, ale sleduj souhrny a chyby. Spolehlivý import není ten, který nikdy nezahlásí problém, ale ten, u kterého ho rychle najdeš a bezpečně napravíš.

Zavolejte mi

Zavolám vám následující pracovní den mezi 9:00 a 17:00.

Můžete mi také zavolat rovnou.

+420 605 181 728

Nechte mi telefonní číslo a pošlete žádost o zpětné zavolání.

Odesláním souhlasíte se zpracováním údajů pro vyřízení žádosti.