Jeśli Twój sklep ma tysiące produktów, zamówień lub klientów, eksport, który działa dobrze na małym katalogu, może nagle utknąć, przekroczyć limit czasu lub zakończyć się bez pliku na większym. Rzadko jest to wina samego Store Exporter Deluxe. Prawie zawsze jest to spowodowane tym, że Twój serwer wyczerpuje dozwoloną pamięć PHP lub czas wykonania dla pojedynczego żądania.
Quick Export już dzieli każdy eksport na partie, więc nie próbuje przetwarzać całego katalogu na raz. Mimo to, wystarczająco duży sklep może potrzebować trochę więcej przestrzeni PHP, a pomocne jest wiedzieć, gdzie szukać, gdy eksport się nie kończy. Ten artykuł omawia, jak działa podział na partie, które ustawienia PHP mają największe znaczenie oraz jak korzystać z dziennika audytu i dzienników WooCommerce, aby dowiedzieć się, dlaczego eksport został zatrzymany.
Wymagania wstępne
| Wymaganie | Szczegóły |
|---|---|
| Wtyczka | Store Exporter Deluxe jest aktywny i licencjonowany |
| WooCommerce | Aktywne, ponieważ eksporty pobierają dane z Twojego sklepu WooCommerce |
| Dostęp do hostingu | Możliwość zmiany memory_limit i max_execution_time PHP lub host, którego możesz poprosić o ich podniesienie |
| Dostęp administratora | Konto z dostępem do panelu administracyjnego WordPress |
Jak działa podział na partie
Quick Export nigdy nie ładuje całego katalogu do pamięci naraz. Zamiast tego dzieli eksportowane rekordy na partie po 100 domyślnie, a następnie przetwarza jedną partię na żądanie. Tak więc eksport 5000 produktów jest realizowany jako 50 oddzielnych partii zamiast jednego ogromnego zapytania, co utrzymuje przewidywalne zużycie pamięci, niezależnie od tego, jak duży jest Twój sklep. Postęp każdej partii jest zapisywany po jej zakończeniu, więc jeśli obserwujesz działanie Quick Export, pasek postępu, który widzisz, zwiększa się o jedną partię na raz, zamiast czekać na zakończenie całego eksportu, zanim cokolwiek się pokaże. Eksporty zaplanowane działają inaczej. Zobacz poniżej Eksport zaplanowany nie jest rozwiązaniem problemów z pamięcią ani limitami czasu.
Zalecane ustawienia PHP dla dużych eksportów
Quick Export: Każda partia Quick Export to własne żądanie, a każda partia działa w ramach normalnego memory_limit i max_execution_time PHP Twojego serwera. Wtyczka nie podnosi tych limitów dla partii, a ustawienie Script Timeout ich nie zmienia. Tak więc w przypadku Quick Export, dwie rzeczy, które pomagają, to mniejszy Batch Size (poniżej) i wyższe limity PHP na Twoim hoście. Jeśli eksporty zatrzymują się z błędami pamięci lub konsekwentnie zatrzymują się po mniej więcej tym samym czasie, poproś swojego hosta o podniesienie memory_limit i max_execution_time w konfiguracji PHP Twojego serwera.
Eksporty zaplanowane: Kiedy rozpoczyna się Eksport zaplanowany, Store Exporter Deluxe prosi PHP o podniesienie limitu pamięci do WP_MAX_MEMORY_LIMIT Twojej witryny i stosuje ustawienie Limit czasu skryptu jako limit czasu wykonania. WordPress domyślnie ustawia WP_MAX_MEMORY_LIMIT na 256 MB, znacznie powyżej własnego minimum wtyczki wynoszącego 64 MB. Niemniej jednak wielu dostawców hostingu blokuje te przesłonięcia w czasie rzeczywistym i narzuca własne twarde limity, niezależnie od tego, co żąda wtyczka. Jeśli duży Eksport zaplanowany nadal się zatrzymuje, poproś swojego dostawcę hostingu o bezpośrednie podniesienie memory_limit i max_execution_time w konfiguracji PHP serwera.
Limit czasu skryptu: Sprawdź Ustawienia → Ogólne → Limit czasu skryptu przed dużym Eksportem zaplanowanym. Domyślnie jest ustawiony na Nieograniczony. Jeśli został zmieniony na 10 minut, 30 minut lub 1 godzinę, Eksport zaplanowany, który trwa dłużej, zatrzyma się po osiągnięciu tego limitu. Ustaw go z powrotem na Nieograniczony przed uruchomieniem dużego Eksportu zaplanowanego. To ustawienie nie wpływa na partie Szybkiego eksportu.
Dostosowywanie rozmiaru partii dla bardzo dużych eksportów
- Otwórz WooCommerce → Store Export z menu administratora WordPress.
- Kliknij Szybki eksport w pasku bocznym.
- Na etapie Wybierz typ eksportu wybierz, co chcesz wyeksportować.
- Przejdź przez Pola eksportu (i Filtry i sortowanie, jeśli pojawią się dla tego typu), aby dotrzeć do etapu Opcje eksportu.
- W sekcji Ustawienia partii wprowadź liczbę w polu Rozmiar partii. Domyślnie jest puste, co oznacza użycie wbudowanej wartości wtyczki wynoszącej 100 rekordów na partię.
Zmniejszenie Rozmiaru partii (na przykład do 25 lub 50) sprawia, że każde pojedyncze żądanie partii jest lżejsze dla pamięci i szybsze do ukończenia, co pomaga na serwerze z niskim memory_limit lub max_execution_time. Kompromisem jest większa liczba partii, więc pełny eksport wymaga więcej żądań do ukończenia. Nie ma ustalonego minimum, więc warto przetestować mniejszą wartość, jeśli eksporty o domyślnym rozmiarze są tymi, które przekraczają limit czasu.

Korzystanie z Dziennika audytu do sprawdzania dużego eksportu
Store Exporter Deluxe przechowuje zapis każdego uruchomienia eksportu w swoim Dzienniku audytu, dostępnym z paska bocznego pod WooCommerce → Store Export. Każdy wpis pokazuje typ eksportu, co go wywołało, jego status i znaczniki czasu.

Kliknij wpis, aby go rozwinąć. Jeśli uruchomienie pokazuje Niepowodzenie, rozwinięty widok zawiera komunikat o błędzie.

Błąd pamięci lub limitu czasu działa inaczej. Kiedy PHP wyczerpie pamięć lub czas, zatrzymuje eksport natychmiast, zanim wtyczka zdąży cokolwiek zarejestrować. Wpis pozostaje wtedy w stanie Uruchomiony bez komunikatu o błędzie. Aby potwierdzić, co się stało, przejdź do WooCommerce → Status → Logi i poszukaj logu ze źródłem fatal-errors lub poproś swojego hostingodawcę o log błędów PHP.
Dziennik audytu jest włączony domyślnie. Jeśli brakuje go na pasku bocznym, ktoś wyłączył przełącznik Włącz dziennik audytu w sekcji Ustawienia → Dziennik audytu.
Ta sama sekcja Ustawienia → Dziennik audytu kontroluje również, ile szczegółów rejestruje każdy wpis, ustawiane oddzielnie dla Szybkich eksportów i Zaplanowanych eksportów. Domyślny poziom Standardowy już rejestruje Czas trwania. Przełącz źródło na Szczegółowy, aby zarejestrować również Maksymalne użycie pamięci.

Warto to włączyć podczas optymalizacji dużego eksportu, ponieważ informuje, jak blisko limitu memory_limit każdy zakończony przebieg się znalazł i ile czasu mu to zajęło. Pokazuje to, ile pozostało zapasu, zanim większy eksport osiągnie limit.

Zaplanowany eksport nie jest rozwiązaniem problemów z pamięcią ani limitami czasowymi
Zaplanowany eksport nie grupuje rekordów tak, jak robi to Szybki eksport. Przetwarza cały zbiór danych jako pojedyncze zadanie w tle za pośrednictwem Action Scheduler. Wtyczka żąda od PHP więcej pamięci i stosuje Limit czasu skryptu po rozpoczęciu przebiegu, ale jeśli Twój hosting blokuje te nadpisy, zadanie nadal działa w ramach limitów Twojego hostingu. Jako pojedyncze zadanie bez grupowania, zazwyczaj wymaga *więcej* pamięci niż zgrupowany Szybki eksport, a nie mniej. Na formularzu Zaplanowanego eksportu nie ma pola Rozmiar grupy, ponieważ nie ma nic do grupowania.
Zaplanowany eksport pozwala uniknąć zależności od karty przeglądarki: ponieważ działa jako zadanie w tle, nie jest powiązany z otwartą kartą przeglądarki ani z tym, jak długo może być przetwarzane żądanie strony w przeglądarce. Jeśli Szybki eksport się zawiesza, ponieważ nie możesz utrzymać karty otwartej wystarczająco długo, Zaplanowany eksport rozwiązuje ten konkretny problem. Jeśli zawiesza się z powodu pamięci lub czasu wykonania, zamiast tego zmniejsz Rozmiar grupy lub zwiększ limity PHP. Szczegółowe instrukcje znajdziesz w Jak zaplanować eksporty w Store Exporter Deluxe.
Rozwiązywanie problemów
memory_limit lub max_execution_time w połowie partii. W takim przypadku pasujący wpis Dziennik audytu pozostaje Uruchomiony bez komunikatu o błędzie, ponieważ PHP zatrzymuje się, zanim wtyczka zdąży go zarejestrować. Aby to potwierdzić, przejdź do WooCommerce → Status → Logi i otwórz log o źródle fatal-errors lub poproś swojego hostingodawcę o log błędów PHP. Linia zaczynająca się od „Allowed memory size of” lub „Maximum execution time of” to potwierdza. Jeśli zamiast tego wpis pokazuje Nieudany, rozwiń go, aby przeczytać komunikat o błędzie.Jeśli był to Szybki eksport, zanim spróbujesz ponownie, przejdź do Ustawienia → Zaawansowane, znajdź Wyczyść dane przejściowe eksportu w sekcji Konserwacja i kliknij Wyczyść. Jeśli pominiesz ten krok, następny Szybki eksport będzie pokazywał „Eksport jest już uruchomiony” przez maksymalnie 30 minut. Następnie zmniejsz Rozmiar partii i spróbuj ponownie. Każda partia działa w ramach limitów PHP Twojego serwera, więc poproś swojego hostingodawcę o podniesienie obu ustawień PHP, jeśli problem będzie się powtarzał. Jeśli to się zdarzy w przypadku Eksportu zaplanowanego, sprawdź również, czy Ustawienia → Ogólne → Limit czasu skryptu jest ustawiony na Nieograniczony.
memory_limit i max_execution_time na serwerze.Często zadawane pytania
memory_limit i max_execution_time hosta, bez ustawienia Rozmiaru Partii, na które można się oprzeć. Zaplanowany eksport może być w rzeczywistości bardziej podatny na przekroczenie czasu na bardzo dużym katalogu niż Szybki Eksport z małym rozmiarem partii.Powiązane artykuły
Potrzebujesz więcej pomocy?
Jeśli używasz Store Exporter Deluxe, a duży eksport nadal się nie kończy po wykonaniu powyższych kroków, otwórz zgłoszenie pomocy technicznej, a nasz zespół pomoże Ci go uruchomić.
Jeśli używasz darmowego wtyczki Store Exporter, zapytaj na forum pomocy technicznej WordPress.org, a nasz zespół odpowie Ci tam.

