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.
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
- Stahuj feed přes zabezpečené spojení a nastav časový limit. Nečekej neomezeně dlouho na cizí server.
- Ulož si datum, velikost souboru a případně jeho kontrolní součet. Později poznáš, jestli přišla nová data.
- Ověř, že soubor opravdu obsahuje očekávaný XML nebo CSV formát. Chybovou HTML stránku nesmíš číst jako produktový feed.
- Když zdroj neprojde kontrolou, import zastav. Starší správná data jsou lepší než rychle zapsaná špatná.
2. Normalizuj a zapisuj po dávkách
- Převeď každý řádek nebo položku do vlastního tvaru: externí kód, název, cena, sklad a stav.
- Zkontroluj povinná pole, čísla a měnu. Neplatnou položku přeskoč, zaznamenej a pokračuj dál.
- Produkt vyhledej podle stabilního externího kódu. Podle výsledku ho vytvoř nebo aktualizuj.
- 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
- 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.
- Jeden běh nesmí spustit druhý běh téhož importu. Použij zámek nebo import zařaď do fronty zpráv.
- Po skončení zapiš počet nových, změněných, přeskočených a chybných produktů.
- 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.
-
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 -
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.
-
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íš.