Import produktów przerywa się w połowie
Publikacja: · Grzegorz Rapczyński
Import rusza, przechodzi kilkaset wierszy i staje. Czasem z błędem, czasem po prostu wraca na początek, jakby nic się nie działo. Zaimportowana jest połowa, w katalogu bałagan, a plik trzeba puścić jeszcze raz. Mowa o wbudowanym imporcie PrestaShop i o pliku CSV przygotowanym ręcznie albo wyeksportowanym z hurtowni.
Pierwsza informacja, której potrzebujesz: czy przerywa się zawsze w tym samym miejscu, czy za każdym razem gdzie indziej. To dzieli przyczyny na dwie zupełnie różne grupy.
Zawsze w tym samym momencie
Jeśli import zatrzymuje się po mniej więcej tej samej liczbie wierszy albo po tym samym czasie, przyczyna jest po stronie limitów serwera. Sklep nie robi nic złego - serwer przerywa mu pracę.
- Maksymalny czas wykonania. Najczęstsza przyczyna. Import to jedna długa operacja i limit liczony w sekundach kończy ją w połowie.
- Limit pamięci. Objawia się zwykle przy imporcie z dużą liczbą kolumn albo przy generowaniu miniatur ze zdjęć wskazanych w pliku.
- Zapełniony dysk. Zdjęcia pobierane w trakcie importu potrafią zająć więcej, niż ktokolwiek zakładał.
Rozwiązanie doraźne i skuteczne: podziel plik na mniejsze części, po kilkaset wierszy. To brzmi jak obejście i nim jest, ale działa, nie wymaga niczyjej zgody i pozwala kontrolować, co weszło.
Rozwiązanie docelowe to podniesienie limitów na serwerze. Przy sklepie z dużym katalogiem to i tak będzie potrzebne przy innych operacjach - regeneracji miniatur, aktualizacjach, eksportach. Napisałem o tym więcej przy okazji wymagań hostingu pod PrestaShop.
Za każdym razem gdzie indziej
Wtedy to nie limit, tylko konkretny wiersz w pliku, na którym import się wykłada. Zwykle chodzi o:
- Uszkodzone kodowanie. Plik zapisany w złym standardzie ma w środku bajty, których import nie potrafi przeczytać. Zapisuj zawsze jako CSV w kodowaniu UTF-8.
- Nieoczekiwany separator w treści. Przecinek albo średnik w opisie, bez cudzysłowów wokół pola, rozjeżdża cały wiersz i wszystko, co po nim.
- Znak końca linii w środku pola. Opis skopiowany z dokumentu potrafi zawierać twarde końce linii, które import traktuje jako koniec wiersza.
- Adres zdjęcia, którego nie da się pobrać. Jeśli import ściąga obrazki po adresach, jeden nieodpowiadający serwer potrafi zawiesić całość na długo.
Sposób na znalezienie winnego wiersza: sprawdź, ile produktów weszło, i otwórz plik na tej pozycji. Problem będzie w tym wierszu albo w następnym.
Co zrobić z połową zaimportowanego katalogu
To jest moment, w którym łatwo zrobić więcej szkody niż pożytku. Kolejność:
- Nie puszczaj tego samego pliku od nowa, dopóki nie wiesz, jak import zachowa się przy istniejących produktach. Jeśli dopisuje zamiast aktualizować, dostaniesz duplikaty całego katalogu.
- Sprawdź ustawienie aktualizacji po referencji. Przy poprawnie ustawionej unikalnej referencji ponowny import po prostu nadpisze to, co już jest - i wtedy powtórzenie całości jest bezpieczne.
- Jeśli powstały duplikaty, wyfiltruj produkty po dacie dodania i usuń partię z nieudanego importu, zanim zaczniesz od nowa.
- Kopia bazy przed każdym kolejnym podejściem. Import to jedna z niewielu operacji, które potrafią nieodwracalnie namieszać w całym katalogu.
Jak importować, żeby się nie przerywało
- Zawsze najpierw dwadzieścia wierszy. Sprawdzasz, czy dane trafiają tam, gdzie powinny, i dopiero wtedy puszczasz resztę. Ta zasada oszczędza więcej czasu niż wszystkie pozostałe razem.
- Partie po kilkaset wierszy, nawet gdy limity pozwalają na więcej. Łatwiej wtedy ustalić, co weszło.
- Zdjęcia osobno. Import danych i import obrazków to dwie różne operacje o zupełnie innym koszcie. Łączenie ich jest najczęstszą przyczyną przerwania.
- Import poza godzinami szczytu. Operacja obciąża sklep, a klienci w tym czasie odczuwają to jako spowolnienie.
Jak przygotować sam plik, żeby nie sprawiał problemów, opisałem osobno w tekście o pliku z produktami do importu.
Jeśli import pochodzi z hurtowni i ma chodzić cyklicznie, to nie jest już zadanie dla wbudowanego importu - opisałem, co ustalić przed wdrożeniem, przy integracji z hurtownią.
Najczęstsze pytania
Czy import może uszkodzić istniejące produkty?
Tak, jeśli plik ma te same referencje co produkty w sklepie, a import jest ustawiony na aktualizację. Dlatego przed większym importem robi się kopię bazy.
Ile wierszy naraz jest bezpieczne?
Na typowym wspólnym hostingu kilkaset. Przy własnym serwerze z podniesionymi limitami kilka tysięcy. Nie ma uniwersalnej liczby - trzeba to sprawdzić na konkretnym sklepie.
Import kończy się bez błędu, ale produktów nie ma. Dlaczego?
Najczęściej dlatego, że produkty weszły jako wyłączone albo bez kategorii domyślnej. Sprawdź listę produktów z filtrem statusu, zanim uznasz import za nieudany.
Duży katalog do wprowadzenia
Jeśli masz do zaimportowania kilka tysięcy produktów i nie chcesz spędzić na tym weekendu, wyślij plik - przejrzę go i powiem, co poprawić, zanim cokolwiek ruszy. Formularz kontaktowy, 881 932 088 lub kontakt@grvision.pl.