← Wszystkie porady

Zaległe zadania WP-Cron

Co to oznacza

Jeśli na Twojej stronie WordPress zalega duża liczba niewykonanych zadań WP-Cron (20 lub więcej), system planowania zadań nie działa prawidłowo. WordPress posiada wewnętrzny scheduler (WP-Cron), który odpowiada za publikację zaplanowanych postów, sprawdzanie aktualizacji, wysyłanie e-maili, wykonywanie kopii zapasowych i inne cykliczne operacje. Liczbę zaległych zadań sprawdzisz poleceniem wp cron event list przez WP-CLI.

W odróżnieniu od systemowego crona, WP-Cron uruchamia się przy każdej wizycie na stronie. Jeśli strona ma mały ruch lub WP-Cron jest wyłączony — zadania się kumulują.

Jakie jest ryzyko

  • Niewysłane powiadomienia — e-maile z formularzy kontaktowych, powiadomienia o komentarzach i zamówieniach mogą nie dochodzić.
  • Niezainstalowane aktualizacje — automatyczne aktualizacje bezpieczeństwa nie zostaną zainstalowane, jeśli WP-Cron nie działa.
  • Niedokończone kopie zapasowe — wtyczki backupowe polegają na WP-Cron do planowania i wykonywania kopii.
  • Problemy z wydajnością — duża liczba zaległych zadań może spowodować gwałtowne obciążenie serwera, gdy WP-Cron w końcu się uruchomi i spróbuje nadrobić zaległości.
  • Błędy wtyczek — zalegający cron może wskazywać na poważniejszy problem — błąd w którejś z wtyczek, który blokuje wykonanie kolejki.

Jak to naprawić

  1. Sprawdź status WP-Cron — czy stała DISABLE_WP_CRON jest ustawiona na true w wp-config.php. Jeśli tak — WP-Cron jest wyłączony.
  2. Skonfiguruj systemowy cron — jeśli WP-Cron jest wyłączony, zastąp go systemowym zadaniem cron (bardziej niezawodne):
    # crontab -e
    */5 * * * * wget -q -O - https://twojastrona.pl/wp-cron.php?doing_wp_cron > /dev/null 2>&1
    
  3. Wyczyść zaległą kolejkę — użyj WP-CLI:
    wp cron event list
    wp cron event run --all
    
  4. Zdiagnozuj przyczynę — jeśli WP-Cron nie jest wyłączony, a zadania się kumulują, problem może leżeć w:
    • Wtyczce, która zawiesza się podczas wykonywania zadania
    • Zbyt niskim limicie pamięci PHP
    • Blokadzie wywołań loopback (serwer nie może się połączyć sam ze sobą)