Wybierz Stronę

Jeżeli w WooCommerce rośnie liczba zaległych Scheduled Actions, nie warto zaczynać od kasowania całej kolejki. Najpierw trzeba ustalić, jaki hook tworzy zadania, czy akcje są Pending, Past-due czy Failed, oraz czy WP-Cron rzeczywiście uruchamia Action Scheduler. Jedna uszkodzona integracja potrafi produkować setki nowych zadań szybciej, niż sklep je wykonuje.

Objaw może wyglądać niewinnie: maile wychodzą po kilku minutach, webhook trafia do systemu magazynowego z opóźnieniem, subskrypcja nie odnawia się o czasie albo synchronizacja zatrzymuje się na części zamówień. W tle problemem bywa właśnie kolejka zadań.

Co to są WooCommerce Scheduled Actions?

WooCommerce i wiele jego rozszerzeń wykonują część pracy poza głównym żądaniem strony. Zamiast zmuszać klienta do czekania w checkoutcie, zadanie może zostać zapisane i wykonane w tle.

Do takich zadań mogą należeć między innymi:

  • wysłanie określonych powiadomień;
  • przetwarzanie płatności i odnowień;
  • dostarczenie webhooka;
  • przetwarzanie większych operacji w partiach;
  • zadania wtyczek marketingowych;
  • synchronizacja z zewnętrzną usługą;
  • czyszczenie lub migracja danych.

WooCommerce wykorzystuje do tego Action Scheduler. Oficjalna dokumentacja opisuje go jako kolejkę zadań działającą w WordPressie i wskazuje panel WooCommerce → Status → Scheduled Actions jako podstawowe miejsce diagnostyki.

Dokumentacja WooCommerce: Scheduled Actions

Pending, Failed, Complete i Past-due: status mówi więcej niż sama liczba

Dziesięć tysięcy akcji historycznych nie musi oznaczać problemu, jeśli są zakończone, stare dane są prawidłowo sprzątane, a bieżąca kolejka działa. Znacznie ważniejsze jest to, co dzieje się z akcjami oczekującymi.

Status Co oznacza diagnostycznie?
Pending zadanie czeka na wykonanie
Past-due termin wykonania minął, a zadanie nadal czeka
Failed zadanie zostało uruchomione, ale zakończyło się błędem
Complete zadanie zostało wykonane
In-progress zadanie zostało podjęte do wykonania

Najbardziej podejrzana jest stale rosnąca liczba Past-due albo duża grupa Failed z tym samym hookiem.

Jeżeli najstarsza akcja Pending ma termin sprzed wielu godzin lub dni, sklep nie przetwarza kolejki w normalnym tempie albo konkretny typ zadania ciągle się nie udaje.

Najważniejszy krok: pogrupuj problem według hooka

Każda akcja ma nazwę hooka. To ona zwykle prowadzi do źródła problemu. Zamiast patrzeć na 5000 wierszy, wyszukaj powtarzające się nazwy.

Przykładowa logika diagnozy:

  1. Otwórz WooCommerce → Status → Scheduled Actions.
  2. Przejdź do Past-due lub Failed.
  3. Zapisz nazwy hooków, które występują najczęściej.
  4. Otwórz kilka najstarszych i kilka najnowszych akcji tego samego typu.
  5. Sprawdź grupę, argumenty i log.
  6. Ustal, która wtyczka lub integracja rejestruje ten hook.

Jeżeli prawie wszystkie zaległe zadania mają tę samą nazwę, problem jest znacznie węższy niż „WooCommerce jest zepsuty”. Może dotyczyć jednej integracji.

Nie usuwaj akcji tylko dlatego, że jest ich dużo

Niektóre zadania są związane z płatnościami, zamówieniami, subskrypcjami, e-mailami lub synchronizacją. Masowe usunięcie bez zrozumienia hooka może sprawić, że system przestanie mieć informację o operacjach, które powinien jeszcze wykonać.

Action Scheduler działa dzięki WP-Cron — sprawdź, czy mechanizm w ogóle jest uruchamiany

WooCommerce wyjaśnia, że Action Scheduler jest uruchamiany przez WordPressowy WP-Cron. WP-Cron nie jest klasycznym systemowym cronem: domyślnie jego wykonanie jest wyzwalane przez żądania do strony.

Problemy mogą pojawić się, gdy:

  • WP-Cron został wyłączony w konfiguracji WordPressa, ale nie zastąpiono go prawidłowym cronem serwerowym;
  • strona ma bardzo mały ruch;
  • loopback requests są blokowane;
  • hosting ogranicza procesy PHP;
  • zadania przekraczają limit pamięci lub czasu;
  • wtyczka bezpieczeństwa blokuje wywołania;
  • kolejka rośnie szybciej, niż serwer jest w stanie ją przetwarzać.

Na sklepie produkcyjnym z ważnymi zadaniami w tle często lepiej opierać wywoływanie WP-Cron na regularnym zadaniu serwerowym niż wyłącznie na przypadkowych wejściach użytkowników. Sposób konfiguracji zależy od hostingu.

Po czym poznać problem z cronem?

Typowy obraz to wiele różnych hooków z terminami w przeszłości. Jeżeli nie zalega jedna konkretna integracja, lecz niemal wszystko, trzeba sprawdzić mechanizm uruchamiania kolejki.

Log akcji: odróżnij zadanie, które nie wystartowało, od zadania, które wystartowało i upadło

To dwa inne problemy.

Akcja Past-due bez próby wykonania sugeruje problem z uruchomieniem kolejki lub jej przepustowością.

Akcja Failed oznacza, że system podjął pracę, lecz wystąpił błąd. W logu może pojawić się komunikat prowadzący do konkretnego API, klasy PHP, limitu pamięci lub danych zamówienia.

Przy błędach warto również sprawdzić:

  • WooCommerce → Status → Logs;
  • logi odpowiedniej bramki płatniczej;
  • log wtyczki integracyjnej;
  • PHP error log na hostingu;
  • WordPress debug log na środowisku diagnostycznym, jeśli jest potrzebny.

Nie włączaj wyświetlania błędów PHP klientom w działającym sklepie.

Co zrobić, gdy Scheduled Actions są już tysiące?

Najpierw zatrzymaj źródło przyrostu. Jeżeli wadliwa integracja co minutę dodaje 100 nowych akcji, samo ręczne uruchamianie lub usuwanie starszych wpisów nie rozwiąże problemu.

Dobra kolejność wygląda tak:

  1. Zrób kopię zapasową bazy danych.
  2. Zidentyfikuj dominujący hook.
  3. Sprawdź, która wtyczka go tworzy.
  4. Sprawdź logi i przyczynę niepowodzenia.
  5. Napraw źródło: konfigurację API, autoryzację, cron, timeout, konflikt albo błąd wtyczki.
  6. Uruchom pojedynczą zaległą akcję testowo.
  7. Obserwuj, czy kończy się jako Complete.
  8. Dopiero potem przetwarzaj resztę kolejki.

Dlaczego nie należy uruchamiać 20 000 akcji naraz?

Duża partia może obciążyć PHP, bazę danych oraz zewnętrzne API. Jeżeli akcje wysyłają webhooki, e-maile lub żądania do systemu księgowego, gwałtowne „nadrobienie” może również przekroczyć limity usług zewnętrznych.

Action Scheduler został zaprojektowany do przetwarzania zadań partiami. W praktyce bezpieczniej przywrócić prawidłowy mechanizm i obserwować tempo opróżniania kolejki niż próbować ręcznie wykonać wszystko naraz.

Dlaczego zablokowana kolejka może wyglądać jak problem z e-mailem albo API?

Nie każda wiadomość i nie każda integracja działa synchronicznie. Część rozszerzeń zapisuje zadanie do kolejki, aby checkout nie czekał na odpowiedź zewnętrznego systemu.

Jeżeli kolejka stoi, administrator może zobaczyć:

  • zamówienie w WooCommerce, ale brak danych w CRM;
  • opóźniony webhook;
  • mail wysłany znacznie później;
  • brak aktualizacji subskrypcji;
  • opóźnienie synchronizacji zapasu;
  • niewykonaną automatyzację marketingową.

Przykładowo dokumentacja WooCommerce dotycząca integracji Zapier opisuje asynchroniczne dostarczanie webhooków poprzez Action Scheduler. Jeżeli zadania woocommerce_deliver_webhook_async pozostają Pending, dane czekają w kolejce.

Jeśli głównym objawem jest brak potwierdzeń zamówień, sprawdź również osobny poradnik WooCommerce nie wysyła potwierdzenia zamówienia. Kolejka jest tylko jedną z możliwych przyczyn; równie ważne są konfiguracja e-maili, SMTP i dostarczalność.

Stripe nie pojawia się w checkoutcie? To inny typ usterki

Warto odróżnić problem tła od problemu samego checkoutu. Jeżeli metoda płatności w ogóle nie jest widoczna, najpierw sprawdza się ustawienia bramki, walutę, kraj, Checkout Block, konflikty i logi. Szczegółowa procedura znajduje się w artykule Stripe nie pokazuje się w checkout WooCommerce.

Bezpieczna procedura diagnostyczna dla sklepu produkcyjnego

Krok Co sprawdzić
1 liczbę Pending, Past-due i Failed
2 najstarszą zaległą datę
3 najczęściej powtarzający się hook
4 log kilku reprezentatywnych akcji
5 wtyczkę lub rozszerzenie tworzące hook
6 działanie WP-Cron lub crona serwerowego
7 log PHP i logi integracji
8 pojedyncze ręczne wykonanie po naprawie
9 tempo opróżniania kolejki
10 czy nowe zadania kończą się prawidłowo

Na stronie live nie testuj przez przypadkowe wyłączanie bramek płatności w godzinach sprzedaży. Jeżeli diagnoza wymaga conflict testu lub zmiany wersji wtyczki, wykorzystaj staging możliwie zbliżony do produkcji.

Jak zapobiegać ponownemu zatykaniu kolejki?

  • Regularnie sprawdzaj WooCommerce System Status.
  • Po dużej aktualizacji wtyczek zajrzyj do Failed i Past-due.
  • Monitoruj zadania integracji krytycznych dla zamówień.
  • Nie ignoruj rosnącego opóźnienia webhooków.
  • Na sklepie o małym ruchu sprawdź niezawodne wywoływanie WP-Cron.
  • Aktualizuj rozszerzenia, które tworzą tysiące błędnych akcji.
  • Nie utrzymuj nieużywanych integracji generujących zadania w tle.

Wysyłka i fulfillment również korzystają z automatyzacji, dlatego po naprawie kolejki wykonaj pełne zamówienie testowe. Jeżeli konfigurujesz logistykę na rynku brytyjskim, przydatny będzie poradnik Royal Mail, DPD czy Evri w WooCommerce.

FAQ

Gdzie znajdują się Scheduled Actions w WooCommerce?

W panelu administratora przejdź do WooCommerce → Status → Scheduled Actions. Możesz tam filtrować zadania według statusu i wyszukiwać hooki.

Czy tysiące Completed actions oznaczają awarię?

Nie same w sobie. Ważniejsze jest, czy bieżące akcje wykonują się na czas. Duża liczba zaległych Past-due lub powtarzających się Failed jest znacznie bardziej diagnostyczna.

Czy mogę usunąć wszystkie Pending actions?

Nie rób tego bez ustalenia ich funkcji. Część może dotyczyć płatności, odnowień, webhooków, e-maili lub synchronizacji. Najpierw zidentyfikuj hook i wtyczkę.

Co najczęściej powoduje zaległe akcje?

Do typowych przyczyn należą problemy z WP-Cron, blokowane loopback requests, ograniczenia hostingu, timeouty, błędy wtyczek, niedostępne API oraz kolejka rosnąca szybciej, niż serwer ją przetwarza.

Czy zaległe Scheduled Actions mogą opóźniać e-maile?

Tak, jeśli dana wiadomość lub proces ją uruchamiający jest obsługiwany asynchronicznie przez kolejkę. Nie każdy e-mail WooCommerce korzysta jednak z Action Scheduler, dlatego trzeba sprawdzić konkretny hook i logi.