Zacznij
Ultimate guide to scaling feeds for 10K+ products - AdTribes
  1. Strona główna
  2. Baza wiedzy
  3. Ogólne wskazówki dotyczące kanałów
  4. Najlepszy przewodnik po skalowaniu kanałów dla ponad 10 tys. produktów

Najlepszy przewodnik po skalowaniu kanałów dla ponad 10 tys. produktów

Sklepy z dużymi katalogami produktów (10 000 lub więcej produktów) często napotykają problemy z powolnym generowaniem kanałów, przekroczeniem limitu czasu lub wyczerpaniem pamięci podczas tworzenia kanałów produktów. Wtyczka AdTribes Product Feed jest stworzona do obsługi nieograniczonej liczby produktów, ale musisz ją poprawnie skonfigurować dla swojego środowiska serwerowego i rozmiaru katalogu.

Ten przewodnik wyjaśnia, jak poprawić wydajność generowania kanałów dla dużych katalogów. Dowiesz się o przetwarzaniu wsadowym, limitach serwera, zaplanowanym generowaniu, filtrowaniu niepotrzebnych produktów i innych kwestiach związanych z wydajnością.

Dlaczego duże kanały są inne

Gdy masz ponad 10 000 produktów, generowanie kanału w jednym żądaniu może przekroczyć:

  • Limity pamięci PHP – Każdy produkt ładuje dane (obrazy, atrybuty, kategorie) do pamięci
  • Maksymalny czas wykonania – Skrypty PHP często przekraczają limit czasu po 30-60 sekundach
  • Zasoby serwera – Hosting współdzielony może ograniczać długo działające procesy

Wtyczka używa przetwarzania wsadowego do podziału generowania kanału na mniejsze części. Każda paczka działa osobno, dzięki czemu unikasz przekroczenia limitu czasu i wyczerpania pamięci. Ponadto możesz zmniejszyć liczbę produktów w swoim kanale, filtrując elementy, których nie potrzebujesz do reklam.

Jak działa przetwarzanie wsadowe

Wtyczka przetwarza kanały w paczkach. Każda paczka obsługuje określoną liczbę produktów (rozmiar paczki). Gdy jedna paczka zakończy się, następna jest automatycznie planowana. To podejście zmniejsza zużycie pamięci i pozwala uniknąć przekroczenia limitu czasu PHP.

Product Feed Pro 13.5.7 i nowsze wersje samodzielnie dostosowują rozmiar paczki zamiast używać stałego wyszukiwania w tabeli. Każda paczka jest mierzona pod kątem czasu i zużycia pamięci; rozmiar następnej paczki jest określany na podstawie tego, co host właśnie udowodnił, że jest w stanie obsłużyć, a nauczony rozmiar jest utrwalany dla każdego kanału, dzięki czemu późniejsze uruchomienia zaczynają się blisko optymalnego. Jest to kluczowa funkcja Product Feed Pro, więc dotyczy ona niezależnie od tego, czy Product Feed Elite jest aktywny. Zobacz Adaptacyjne rozmiary paczek poniżej.

We wcześniejszych wersjach wtyczka zamiast tego używała stałych domyślnych rozmiarów paczek opartych na całkowitej liczbie produktów:

Liczba produktówWielkość partii
Poniżej 1000200 produktów na partię
1,000-5,000300 produktów na partię
5,000-10,000500 produktów na partię
10,000-50,0001000 produktów na partię
50,000+1500 produktów na partię

Te domyślne ustawienia zostały zaprojektowane z myślą o niezawodności. Mniejsze paczki zużywają mniej pamięci i rzadziej osiągają limity wykonania.

Adaptacyjne rozmiary partii

Począwszy od Product Feed Pro 13.5.7, generowanie kanału nie wybiera już jednego stałego rozmiaru paczki na uruchomienie z tabeli przedziałów liczby produktów. Zamiast tego kontroler mierzy czas każdej paczki i jej zużycie pamięci, a następnie określa rozmiar następnej paczki na podstawie tego, co host właśnie udowodnił, że jest w stanie obsłużyć. Nauczony rozmiar jest zapisywany dla każdego kanału, dzięki czemu kolejne uruchomienia zaczynają się blisko optymalnego od pierwszej paczki.

Wyniki testów porównawczych: Na kanale Google Shopping XML z 18 201 produktami, gdzie każda paczka ponosi rzeczywisty koszt uruchomienia WordPress (jak ma to miejsce w produkcji), adaptacyjne rozmiary paczek działały około 19% szybciej przy pierwszym uruchomieniu i 24% szybciej przy ponownym uruchomieniu, z potwierdzoną identycznością wyników, identyczną liczbą produktów w każdym scenariuszu.

Dlaczego zysk jest ważniejszy niż sugeruje benchmark: Przyspieszenie wynika z eliminacji podróży w obie strony na partię, a nie z szybszego przetwarzania na produkt. Czysty czas przetwarzania na produkt pozostaje niezmieniony. Każda partia ponosi pełny koszt uruchomienia WordPressa i wtyczek oraz oczekiwania na Action Scheduler, więc zmniejszenie liczby przebiegów z 19 partii do 2 usuwa 17 uruchomień i 17 oczekiwań. Ma to największe znaczenie w sklepach o niskim natężeniu ruchu: tam, gdzie WP-Cron uruchamia się tylko przy odwiedzinach, czas oczekiwania między partiami dominuje w całkowitym czasie generowania pliku, więc redukcja liczby partii jest w praktyce znacznie cenniejsza niż sugerują same liczby z benchmarku, co jest przydatną kombinacją dla sklepów z dużymi katalogami, które mają również niski ruch.

Łagodne obniżanie wydajności na ograniczonych hostach: Jeśli host ma ograniczenia pamięci (na przykład limit 128 MB), rozmiar partii jest zmniejszany, aż partie zmieszczą się, a plik zostanie ukończony powoli zamiast kończyć się niepowodzeniem przy każdym uruchomieniu. Wcześniej najmniejszy dostępny poziom wynosił 200 produktów na partię, więc hosty, które nie mogły obsłużyć nawet tego rozmiaru, nigdy nie ukończyły pliku.

Ustawienie jawnego rozmiaru partii (patrz Konfiguruj niestandardowy rozmiar partii poniżej) całkowicie wyłącza adaptacyjne skalowanie dla tego pliku. W przypadku katalogów z ponad 10 000 produktów, lepszym domyślnym ustawieniem jest pozostawienie rozmiaru partii nieustawionym i pozwolenie kontrolerowi na naukę. Zarezerwuj ręczny rozmiar partii dla hostów z twardymi, już znanymi ograniczeniami.

Konfiguruj niestandardowy rozmiar partii

Jeśli Twój kanał się zawiesza lub przekracza limit czasu, spróbuj zmniejszyć wielkość partii. I odwrotnie, jeśli masz potężny serwer i chcesz szybszego generowania, możesz ją zwiększyć.

Jawny rozmiar partii wyłącza adaptacyjne skalowanie (Product Feed Pro 13.5.7+). W przypadku katalogów z ponad 10 000 produktów, pozostaw to ustawienie nieustawione, chyba że Twój host ma twarde ograniczenie, które już rozumiesz, i pozwól kontrolerowi zamiast tego nauczyć się optymalnego rozmiaru.

Jak zmienić rozmiar partii

  1. Przejdź do Product FeedUstawieniaOgólne
  2. Włącz Zmień liczbę produktów na partię
  3. Wprowadź wartość w Wstaw rozmiar partii: (np. 500 lub 250)
  4. Zapisz ustawienia

Rekomendacje:

  • Limity czasu: Użyj mniejszego rozmiaru partii (np. 250-500), aby każda partia zakończyła się przed maksymalnym czasem wykonania serwera
  • Błędy pamięci: Zmniejsz rozmiar partii jeszcze bardziej (np. 100-200), aby zmniejszyć zużycie pamięci na partię
  • Stabilne serwery: Możesz spróbować większych partii (np. 1000-1500) dla szybszego całkowitego generowania, ale tylko jeśli Twój serwer sobie z nimi radzi bez błędów

Dokładniej:

Typ serweraSugerowany rozmiar partii
Współdzielony hosting200-300
VPS lub chmura500-1000
Serwer dedykowany1000-1500

Zawsze testuj po zmianie rozmiaru partii. Jeśli plik nadal się zacina, zmniejsz go jeszcze bardziej. Aby uzyskać więcej informacji, zobacz Konfiguracja rozmiaru partii pliku produktu.

Sprawdź i dostosuj limity serwera

Twoje środowisko hostingowe nakłada limity na czas wykonywania PHP i pamięć. Mają one bezpośredni wpływ na generowanie pliku.

max_execution_time

Każda partia działa w ramach PHP max_execution_time. Jeśli jest zbyt niski (np. 30 lub 60 sekund), partie mogą zostać przerwane przed zakończeniem.

  • Zalecane: Co najmniej 300 sekund (5 minut) dla dużych katalogów
  • Jak sprawdzić: Przejdź do WP Admin → WooCommerce → Status i znajdź wartość Limit czasu PHP w Środowisko serwera.
  • Jak naprawić: Zwiększ limit w konfiguracji serwera, dodając set_time_limit(300) do pliku wp-config.php lub skontaktuj się ze swoim dostawcą hostingu

memory_limit

Generowanie pliku ładuje dane produktów do pamięci. Podczas przetwarzania tysięcy produktów na partię, niski limit pamięci może spowodować krytyczne błędy lub niekompletne pliki.

  • Zalecane: 256 MB lub więcej dla 10 000+ produktów
  • Jak sprawdzić: Przejdź do WP Admin → WooCommerce → Status i znajdź wartość WordPress Memory Limit w sekcji WordPress Environment.
  • Jak naprawić: Zwiększ limit pamięci w wp-config.php, dodając define('WP_MEMORY_LIMIT', '256M'); lub poproś swojego dostawcę hostingu o zwiększenie limitu.

Wtyczka loguje ostrzeżenie, gdy dostępna pamięć jest poniżej 128 MB przed uruchomieniem partii (jeśli logowanie jest włączone). Ten wpis pojawia się pod źródłem logów woo-product-feed-pro w WooCommerce → Status → Logi. Użyj tego, aby wykryć potencjalne problemy.

Ostrzeżenia dotyczące odzyskiwania po awarii i zaparkowanych kanałów z adaptacyjnego rozmiaru partii (Product Feed Pro 13.5.7+) są logowane bezwarunkowo do tego samego źródła logów woo-product-feed-pro, niezależnie od ustawienia „Włącz logowanie”. Jeśli Twój kanał jest nadal parkowany po wielokrotnych awariach, sprawdź WooCommerce → Status → Logi, nawet jeśli nie włączyłeś logowania.

Użyj zaplanowanego generowania zamiast ręcznego odświeżania

W przypadku dużych katalogów unikaj polegania na ręcznym odświeżaniu z przeglądarki. Żądania przeglądarki mogą ulec przedawnieniu lub rozłączyć się, zanim wszystkie partie zostaną zakończone. Zamiast tego użyj zaplanowanego generowania.

Interwał odświeżania

  1. Edytuj swój kanał i przejdź do zakładki Ogólne
  2. Ustaw Interwał odświeżania na Co godzinę, Codziennie lub Dwa razy dziennie (Product Feed Elite obsługuje również niestandardowe interwały)
  3. Zapisz feed

Wtyczka używa Action Scheduler do generowania feedu w tle w wybranym interwale. Jest to bardziej niezawodne niż ręczne odświeżanie w przypadku dużych feedów.

Cron serwera (zaawansowane)

Aby uzyskać precyzyjną kontrolę lub w przypadku sklepów o dużym natężeniu ruchu, możesz użyć zadania cron serwera zamiast wbudowanego harmonogramu. Jest to szczególnie przydatne, gdy:

  • Chcesz, aby feedy były generowane o określonych porach (np. poza godzinami szczytu)
  • Twoja witryna ma niski ruch, a cron WP może nie działać wystarczająco często
  • Musisz rozłożyć w czasie generowanie wielu dużych feedów

Szczegółowe instrukcje znajdziesz w Jak odświeżyć kanał produktu za pomocą zadań cron.

Wyłącz żądania generowania kanału przez HTTP

Po kliknięciu Odśwież na stronie Zarządzaj kanałami, wtyczka może wyzwolić generowanie kanału za pomocą żądań HTTP. W dużych sklepach lub na ograniczonych hostingach może to spowodować przekroczenie limitu czasu lub niekompletne kanały.

Wyłącz żądania generowania kanału HTTP wymusza generowanie kanału tylko za pomocą Action Scheduler (lub cron serwera). Żadne żądania HTTP nie są używane do rozpoczynania ani kontynuowania partii.

Jak włączyć

  1. Przejdź do Product FeedUstawieniaOgólne
  2. Włącz Wyłącz żądania generowania kanału HTTP
  3. Zapisz ustawienia

Kiedy używać:

  • Twój feed ciągle się zawiesza lub przekracza limit czasu podczas klikania Odśwież
  • Używasz niestandardowego rozmiaru partii (przetwarzanie partii domyślnie wyłącza przetwarzanie HTTP w tym przypadku)
  • Generujesz feedy za pomocą zaplanowanego odświeżania lub cron serwera

Więcej informacji znajdziesz w Co robi opcja „Wyłącz żądania generowania kanału HTTP”?.

Filtruj niepotrzebne produkty

Uwzględnienie w feedzie tylko potrzebnych produktów skraca czas przetwarzania i zmniejsza rozmiar pliku. Użyj filtrów, aby wykluczyć produkty, które nie są istotne dla Twojego kanału.

Typowe strategie filtrowania

CelTyp filtruPrzykładowy warunek
Uwzględnij tylko dostępne produktyUwzględnijStatus magazynowy = w magazynie
Uwzględnij produkty z określonej kategoriiUwzględnijKategoria zawiera [docelowa kategoria]
Uwzględnij produkty powyżej określonej cenyUwzględnijCena wyższa niż X
Wykluczyć produkty niedostępne w magazynieWykluczStatus magazynowy = brak na stanie
Wyklucz produkty bez obrazówWykluczGłówny obraz jest pusty
Wyklucz produkty o bardzo niskiej cenieWykluczCena niższa niż X
Wyklucz określone kategorieWykluczKategoria zawiera [nazwa kategorii]
Wyklucz określone marki lub tagiWykluczMarka/Tag zawiera [wartość]

Mniej produktów oznacza mniej partii i szybsze generowanie kanału. Szczegółowe wskazówki znajdziesz w Jak tworzyć filtry dla swojego kanału produktu.

Produkty wariantowe i warianty

Jeśli używasz produktów zmiennych, rozważ:

Te opcje znajdują się w zakładce Ogólne kanału i mogą znacznie zmniejszyć liczbę przetwarzanych produktów.

Podsumowanie kwestii wydajności

CzynnikZalecenie dla ponad 10 000 produktów
Rozmiar partiiPozostaw nieustawione, aby umożliwić adaptacyjne skalowanie (Product Feed Pro 13.5.7+); w przeciwnym razie 200-500 na hostingu współdzielonym, 500-1000 na VPS/dedykowanym
max_execution_time300 sekund lub więcej
memory_limit256 MB lub więcej
Metoda odświeżaniaZaplanowane (co godzinę/codziennie) lub cron serwera, nie tylko ręczne
Generowanie HTTPWyłącz, jeśli pliki utkną lub przekroczą limit czasu
FiltryWyklucz produkty niedostępne, z nieistotnych kategorii lub o niskiej wartości
Produkty z wariantamiUżyj „najniższej ceny” lub „domyślnego wariantu”, gdy jest to odpowiednie

Rozwiązywanie typowych problemów

ProblemRozwiązanie
Kanał utknął podczas przetwarzaniaZmniejsz rozmiar partii; włącz Wyłącz generowanie kanału HTTP; sprawdź Pomoc, mój kanał nie aktualizuje się lub jest w trakcie przetwarzania!
Błędy przekroczenia limitu czasuZwiększ max_execution_time do 300+; zmniejsz rozmiar partii
Błąd krytyczny / wyczerpanie pamięciZwiększ memory_limit do 256 MB+; w Product Feed Pro 13.5.7+ adaptacyjne skalowanie degraduje się płynnie zamiast całkowicie zawodzić
Mniej produktów niż oczekiwanoSprawdź filtry i reguły; zobacz Pomoc! Mam mniej produktów w moim kanale produktów niż oczekiwano lub wcale
Błędy Action SchedulerPrzejdź do WooCommerce → Status → Zaplanowane Akcje; sprawdź zakładkę Nieudane; zwiększ limity serwera

Potrzebujesz dalszej pomocy?

Jeśli potrzebujesz pomocy w optymalizacji generowania kanału dla Twojego dużego katalogu:

  • Użytkownicy Product Feed Elite: Utwórz zgłoszenie, aby skontaktować się z zespołem pomocy AdTribes.
  • Użytkownicy Product Feed Pro: Otwórz temat na forum WordPress.org.
Czy ten artykuł był pomocny?

Powiązane artykuły

Dokończ zakup
AdTribes WooCommerce Product Feed

Najlepsza wtyczka WooCommerce do kanałów produktów

  • AdTribes Pty Ltd
    ABN: 40 675 636 816
Produkt
Zasoby i informacje
Witryny partnerskie
Rymera