Visser Labs – Wtyczki WooCommerce

  1. Strona główna
  2. Baza wiedzy
  3. WooCommerce Store Exporter Deluxe
  4. Najczęstsze problemy z eksportem
  5. Jak eksportować duże sklepy WooCommerce za pomocą Store Exporter Deluxe

Jak eksportować duże sklepy WooCommerce za pomocą Store Exporter Deluxe

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

WymaganieSzczegóły
WtyczkaStore Exporter Deluxe jest aktywny i licencjonowany
WooCommerceAktywne, ponieważ eksporty pobierają dane z Twojego sklepu WooCommerce
Dostęp do hostinguMożliwość zmiany memory_limit i max_execution_time PHP lub host, którego możesz poprosić o ich podniesienie
Dostęp administratoraKonto 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.

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.

W przypadku Szybkiego eksportu, zmniejszenie rozmiaru partii (poniżej) jest głównym ustawieniem, które kontrolujesz. Mniejsza partia wymaga mniej pamięci i czasu na żądanie, co często pozwala na przeprowadzenie dużego eksportu nawet na serwerze z ograniczonymi zasobami.

Dostosowywanie rozmiaru partii dla bardzo dużych eksportów

  1. Otwórz WooCommerce → Store Export z menu administratora WordPress.
  2. Kliknij Szybki eksport w pasku bocznym.
  3. Na etapie Wybierz typ eksportu wybierz, co chcesz wyeksportować.
  4. Przejdź przez Pola eksportu (i Filtry i sortowanie, jeśli pojawią się dla tego typu), aby dotrzeć do etapu Opcje eksportu.
  5. 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.

Krok Opcje Eksportu Szybkiego Eksportu pokazujący sekcję Ustawienia Partii, z polem Rozmiar Partii ustawionym na 25

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.

Strona Dziennik Audytu z listą ostatnich uruchomień eksportu z kolumnami typu, wyzwalacza, statusu, poziomu i czasu trwania

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

Rozwinięty wpis Dziennika Audytu ze statusem Niepowodzenie, pokazujący pole Błąd z komunikatem 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.

Poziom dziennika Szybkich Eksportów ustawiony na Szczegółowy

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.

Lista pól poziomu Szczegółowy pokazująca zaznaczone pola Czas trwania i Maksymalne użycie pamięci

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

Szybki eksport zawiesza się lub nigdy się nie kończy
Najpierw sprawdź wpis Dziennik audytu dla tego uruchomienia. Jeśli nadal pokazuje Uruchomiony długo po zatrzymaniu eksportu, wydarzyło się jedno z dwóch. PHP osiągnął swój limit pamięci lub czasu (aby to potwierdzić, zobacz poniżej Eksport kończy się błędem serwera), lub karta przeglądarki utraciła połączenie w trakcie. Po takim zatrzymaniu wtyczka nadal traktuje eksport jako uruchomiony przez maksymalnie 30 minut, więc nowy Szybki eksport pokazuje „Eksport jest już uruchomiony”. Zanim spróbujesz ponownie, przejdź do Ustawienia → Zaawansowane, znajdź Wyczyść dane przejściowe eksportu w sekcji Konserwacja i kliknij Wyczyść. Następnie spróbuj ponownie z mniejszym Rozmiarem partii i trzymaj kartę otwartą i aktywną, dopóki eksport się nie zakończy, zamiast przełączać się z niej na dłuższy czas.
Eksport kończy się błędem serwera
Błąd serwera podczas dużego eksportu zazwyczaj oznacza, że PHP osiągnął 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.
Duży katalog nadal przekracza limit czasu przy małym rozmiarze partii
Zaplanowany eksport tutaj nie pomoże, ponieważ uruchamia cały eksport jako jedno zadanie bez podziału na partie i wymaga więcej pamięci i czasu niż Szybki eksport, a nie mniej. Kliknij Wyczyść obok Wyczyść dane przejściowe eksportu (Ustawienia → Zaawansowane, w sekcji Konserwacja), jak opisano powyżej, a następnie jeszcze bardziej zmniejsz Rozmiar partii. Każda partia działa w ramach limitów PHP Twojego serwera, więc jeśli eksport nadal nie może się zakończyć, poproś swojego hostingodawcę o bezpośrednie podniesienie memory_limit i max_execution_time na serwerze.

Często zadawane pytania

Jaki jest dobry rozmiar partii na początek dla dużego sklepu?
Nie ma jednej właściwej liczby, ponieważ zależy to od limitów pamięci i czasu serwera. Zacznij od domyślnych 100. Jeśli eksporty przekraczają czas, spróbuj 50, potem 25, aż znajdziesz rozmiar, który konsekwentnie się kończy.
Czy mniejszy rozmiar partii spowalnia cały eksport?
Może to dodać niewielki narzut, ponieważ więcej partii oznacza więcej indywidualnych żądań. Ale mniejszy rozmiar partii, który faktycznie się kończy, jest w praktyce szybszy niż większy, który przekracza czas i musi zostać ponownie uruchomiony.
Czy zaplanowany eksport całkowicie pozwoli uniknąć przekroczenia czasu?
Nie. Usuwa zależność od karty przeglądarki, którą ma Szybki Eksport, ale działa jako pojedyncze zadanie bez podziału na partie. Jeśli Twój hosting blokuje nadpisywanie limitów pamięci i czasu przez wtyczkę, zadanie nadal musi zakończyć się w ramach 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.

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.

Czy ten artykuł był pomocny?

Powiązane artykuły

Zasoby i pomoc