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ów | Wielkość partii |
|---|---|
| Poniżej 1000 | 200 produktów na partię |
| 1,000-5,000 | 300 produktów na partię |
| 5,000-10,000 | 500 produktów na partię |
| 10,000-50,000 | 1000 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.
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ć.
Jak zmienić rozmiar partii
- Przejdź do Product Feed → Ustawienia → Ogólne
- Włącz Zmień liczbę produktów na partię
- Wprowadź wartość w Wstaw rozmiar partii: (np. 500 lub 250)
- 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 serwera | Sugerowany rozmiar partii |
|---|---|
| Współdzielony hosting | 200-300 |
| VPS lub chmura | 500-1000 |
| Serwer dedykowany | 1000-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 plikuwp-config.phplub 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ącdefine('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.
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
- Edytuj swój kanał i przejdź do zakładki Ogólne
- Ustaw Interwał odświeżania na Co godzinę, Codziennie lub Dwa razy dziennie (Product Feed Elite obsługuje również niestandardowe interwały)
- 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ć
- Przejdź do Product Feed → Ustawienia → Ogólne
- Włącz Wyłącz żądania generowania kanału HTTP
- 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
| Cel | Typ filtru | Przykładowy warunek |
|---|---|---|
| Uwzględnij tylko dostępne produkty | Uwzględnij | Status magazynowy = w magazynie |
| Uwzględnij produkty z określonej kategorii | Uwzględnij | Kategoria zawiera [docelowa kategoria] |
| Uwzględnij produkty powyżej określonej ceny | Uwzględnij | Cena wyższa niż X |
| Wykluczyć produkty niedostępne w magazynie | Wyklucz | Status magazynowy = brak na stanie |
| Wyklucz produkty bez obrazów | Wyklucz | Główny obraz jest pusty |
| Wyklucz produkty o bardzo niskiej cenie | Wyklucz | Cena niższa niż X |
| Wyklucz określone kategorie | Wyklucz | Kategoria zawiera [nazwa kategorii] |
| Wyklucz określone marki lub tagi | Wyklucz | Marka/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ż:
- I uwzględnij tylko najtańszy wariant(y) produktu: Jeden wariant na produkt zamiast wszystkich
- I uwzględnij tylko domyślny wariant produktu: Dalsze zmniejszenie liczby produktów
Te opcje znajdują się w zakładce Ogólne kanału i mogą znacznie zmniejszyć liczbę przetwarzanych produktów.
Podsumowanie kwestii wydajności
| Czynnik | Zalecenie dla ponad 10 000 produktów |
|---|---|
| Rozmiar partii | Pozostaw 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_time | 300 sekund lub więcej |
| memory_limit | 256 MB lub więcej |
| Metoda odświeżania | Zaplanowane (co godzinę/codziennie) lub cron serwera, nie tylko ręczne |
| Generowanie HTTP | Wyłącz, jeśli pliki utkną lub przekroczą limit czasu |
| Filtry | Wyklucz produkty niedostępne, z nieistotnych kategorii lub o niskiej wartości |
| Produkty z wariantami | Użyj „najniższej ceny” lub „domyślnego wariantu”, gdy jest to odpowiednie |
Rozwiązywanie typowych problemów
| Problem | Rozwiązanie |
|---|---|
| Kanał utknął podczas przetwarzania | Zmniejsz 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 czasu | Zwiększ max_execution_time do 300+; zmniejsz rozmiar partii |
| Błąd krytyczny / wyczerpanie pamięci | Zwię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ż oczekiwano | Sprawdź filtry i reguły; zobacz Pomoc! Mam mniej produktów w moim kanale produktów niż oczekiwano lub wcale |
| Błędy Action Scheduler | Przejdź 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.

