Feedlinter

← Wszystkie artykuły

Autor: Feedlinter

WooCommerce 504 lub Memory Exhausted przy generowaniu feedu XML: naprawa krok po kroku

WooCommerce zwraca 504 lub Allowed memory size exhausted podczas tworzenia feedu XML? Sprawdź logi PHP, limity hostingu, cache feedu i obciążenie wtyczek.

Dlaczego generowanie feedu kończy się błędem

Błąd 504 oznacza, że brama lub serwer nie otrzymały odpowiedzi na czas. `Allowed memory size exhausted` oznacza, że proces PHP przekroczył dostępny limit pamięci. Duży katalog, warianty, dodatkowe pola i wtyczki mogą sprawić, że jednorazowe wygenerowanie całego XML zużyje więcej zasobów niż typowe wyświetlenie strony.

Sam komunikat 504 nie dowodzi, że winny jest feed. Przyczyną może być wolna baza danych, przeciążony serwer, reguła wtyczki albo limit czasu po stronie proxy. Zacznij od logów PHP i serwera z dokładnego momentu błędu.

Jak zdiagnozować timeout lub brak pamięci

Sprawdź `WooCommerce > Status > Logs`, logi PHP oraz limity `memory_limit`, `max_execution_time` i timeout serwera. Zapisz, czy błąd pojawia się przy każdym uruchomieniu, czy tylko przy pełnym katalogu. Porównaj mały feed testowy z eksportem wszystkich produktów.

W środowisku staging wyłączaj po jednej wtyczce związanej z cenami, wariantami lub feedem i obserwuj zużycie pamięci. Nie rób tego na produkcji bez planu, bo wyłączenie wtyczki może zmienić widok sklepu lub synchronizację zamówień.

Sposoby naprawy w dobrej kolejności

Jeśli limity PHP są zbyt niskie, poproś hosting o bezpieczne zwiększenie dostępnej pamięci i czasu procesu. Ustawienie `WP_MEMORY_LIMIT` nie podniesie limitu ponad limit PHP serwera. Zmianę testuj na kopii sklepu i kontroluj, czy maszyna ma zasoby, by ją obsłużyć.

Dla dużego katalogu korzystaj z generowania przyrostowego lub cache elementów feedu, jeśli wtyczka to obsługuje. Podziel eksport na mniejsze porcje, na przykład kategorie lub grupy produktów. Jeżeli wtyczka buduje cały plik w pamięci, rozważ generator strumieniowy lub osobny proces w tle.

Czego unikać

Nie zwiększaj limitów bez końca i nie powtarzaj ręcznie żądania, które regularnie przeciąża serwer. Nie usuwaj produktów z feedu tylko po to, by ukryć błąd. Nie pomijaj logów: 504 może maskować błąd fatalny, a większy limit pamięci nie naprawi zapętlonego zapytania ani konfliktu wtyczek.

Jak sprawdzić, czy problem zniknął

Po zmianie wygeneruj feed dla małej próbki, następnie dla pełnego katalogu. Sprawdź, czy XML jest kompletny, czy liczba produktów zgadza się z katalogiem i czy odpowiedź serwera nie urywa pliku. Na końcu uruchom pobranie z Google Merchant Center, aby potwierdzić, że feed jest dostępny z zewnątrz.

Długofalowo monitoruj czas generowania i pamięć procesu po imporcie dużej partii produktów. Dzięki temu 504 lub Memory Exhausted wykryjesz, zanim kolejny zaplanowany feed przestanie działać.