1. Kolejka zamiast wszystkiego naraz
Najczęstszy błąd to wołanie zewnętrznego API w trakcie wizyty klienta na stronie albo w jednej długiej pętli. Przy kilkuset produktach skrypt przekroczy czas wykonania albo limit pamięci.
Lepiej wrzucić zadania do kolejki: aktualizacje dzielę na małe paczki (np. po 50 produktów) i przetwarzam w tle, przez proces działający cały czas albo cron co kilka minut.
2. Szanuj limity i odczekaj
Gdy serwer odpowiada 429 Too Many Requests, konektor czyta nagłówek Retry-After, czeka tyle, ile trzeba, i próbuje ponownie, za każdym razem z dłuższą przerwą (exponential backoff). Nie dobija przeciążonego serwera hurtowni i nie ryzykuje blokady adresu IP.
3. Wysyłaj tylko to, co się zmieniło
Po co pytać BaseLinkera o produkt, którego cena i stan nie zmieniły się od wczoraj? Przed wysłaniem liczę hash (MD5 albo SHA-256) z najważniejszych pól i aktualizuję tylko te produkty, w których coś się zmieniło. Przy dużym katalogu to zwykle niewielki ułamek wszystkich pozycji, więc limit przestaje być problemem.
4. Nie pobieraj tokena przy każdym zapytaniu
BaseLinker używa stałego tokena, ale wiele API, z którymi go łączę (np. Allegro), działa na OAuth2. Tam widuję skrypty, które pobierają nowy token przed każdym zapytaniem. Token trzeba przechowywać bezpiecznie (np. w Redis albo w tabeli w bazie) i odświeżać w tle dopiero wtedy, gdy zbliża się koniec jego ważności.