publikacja: 27 lutego 2009, 10:39; autor: Szymon Skulimowski http://wpninja.pl/wordpress-2-7-i-problemy-z-cronem/

WordPress 2.7 i problemy z cronem

WordPress 2.7 i problemy z cronem fot. .NaPs

Twój WordPress ma problemy z wysyłaniem sygnałów pingback? Zamiast publikacji zaplanowanych wpisów wyświetla tajemniczą informację o „przekroczonym planie” (ang. „missed schedule”)? Wtyczki nie działają jak trzeba?

Tak, możesz mieć problem z cronem.

…problemy z czym?

Bez zagłębiania się w zbędne pierdółki - cron to specjalne narzędzie, które znajduje się na serwerze hostingowym. Odpowiada ono za cykliczne wykonywanie określonych przez użytkownika zadań. (tekst zaktualizowano dzięki wskazówce Grześka - dzięki! :-)).

WordPress od wersji 2.1 wyposażony jest we własnego pseudo-crona (cron to specjalne narzędzie, które odpowiada za cykliczne wykonywanie określonych przez użytkownika zadań), dzięki któremu wykonuje takie operacje jak:

  • wysyłanie sygnałów pingback/trackback
  • sprawdzanie czy pojawiła się nowa wersja wtyczki czy skórki
  • publikowanie zaplanowanych wcześniej wpisów

Jest on także używany przez wtyczki a w tym m.in przez WP Super Cache, WP-Polls, WordPress Database Backup, qTranslate, Google XML Sitemaps i wiele, naprawdę wiele innych.

Mimo iż problemy z cronem pojawiały się już wcześniej to dopiero przejście na WordPress 2.7 / 2.7.1 wywołało prawdziwą ich lawinę.

Symptomy problemów z cronem

Efekty problemów współdziałania WordPressa z cronem mogą być następujące:

  • skrypt nie potrafi wykryć czy pojawiła się nowa wersja wtyczki lub skórki
  • sygnały pingback i trackback nie docierają do adresatów
  • zaplanowane wpisy nie są publikowane („przekroczono plan” / „missed schedule”)
  • WP Database Backup - harmonogram tworzenia kopii zapasowych nie jest przestrzegany
  • WP Super Chache - chache plików nie jest aktualizowany
  • i wiele innych związanych głównie z używanymi wtyczkami

Instalując wtyczkę WP-Cron-Dashboard możesz upewnić się czy aby na pewno zadania zlecone cronowi stoją w miejscu. Poniżej dwa przykłady przeglądu harmonogramu:

  • problemem z cronem
    Terminy wykonania zadań zostały mocno przekroczone:

    Wtyczka WP-Cron-Dashboard

    Ewidentne problemy z cronem

  • brak problemu z cronem
    Zadania wykonywane są w ustalonym czasie:

    problemy-z-cronem-przekroczony-plan-02

    Brak problemów z cronem

Mając pewność co do źródła problemu możesz przystąpić do działania.

Tymczasowe rozwiązanie problemu

Rozwiązanie znalazłem na New Blog Help gdzie autor radzi aby zastąpić dwa pliki (wp-cron.php oraz wp-includes/cron.php) tymi pochodzącymi z WordPressa 2.6.5.

Jest to rozwiązanie raczej tymczasowe ale, co sprawdziłem u siebie, działa perfekcyjnie.

Komentarze (12)

  1. Grzesiek (27 lutego 2009, 12:40) #:

    drobna niescislosc - ten fragment:

    Bez zagłębiania się w zbędne pierdółki - cron to specjalne narzędzie, które znajduje się na serwerze hostingowym. Odpowiada ono za cykliczne wykonywanie określonych przez użytkownika zadań. WordPress wykorzystuje crona do takich operacji jak:

    sugerujesz, ze WP korzysta z UNIXowego cron deamona, co jest nieprawda.

    WP implementuje cos na ksztalt pseudo-crona i dziala to w ten sposob:

    http://www.kminek.pl/jak-postawic-spambloga-na-wordpressie/#wordpressowy-harmonogram-zadan

    pozdrawiam

  2. Szymon Skulimowski (27 lutego 2009, 13:00) #:

    Tego akurat nie wiedziałem :-).
    Dzięki Grzesiek za zwrócenie uwagi i wyprowadzenie z błędu.

  3. Grzesiek (27 lutego 2009, 16:09) #:

    nie ma sprawy ;)

  4. Custom (28 lutego 2009, 9:20) #:

    Hmmm, w końcu jakiś ciekawy artykuł :)
    Co nie oznacza, że inne były słabe :)
    Aczkolwiek dzięki za poradę, bo na prawdę - przydała mi się ;] Sam MIAŁEM problemy z cronem, ale dzięki WPNinja zażegnałem go :)
    Thx Szymon :P

  5. Tomek (28 lutego 2009, 15:57) #:

    Ja podobne problemy miałem jedynie na słabszych jakościowo hostingach. Na tych topowych zawsze zero problemów :)

  6. Szymon Skulimowski (28 lutego 2009, 19:48) #:

    Ja problem wykryłem na razie tylko na hostingu linuxpl.com - nie miałem jeszcze okazji sprawdzić tego gdzie indziej.

  7. Jacek (28 lutego 2009, 21:52) #:

    Ja również korzystam z linuxpl.com i nie mam w/w problemów.

  8. Iwonka (1 marca 2009, 1:08) #:

    po aktualizacji wordpressa z 2.7 na 2.71 wyskoczylo mi takie cos przy logowaniu:

    Nie posiadasz wystarczających uprawnień, by wejść na tę stronę.

    co zrobic ?

  9. Jacek (1 marca 2009, 10:50) #:

    @Iwonka: Tomek podał już rozwiązanie w innym temacie:

    Skasuj folder wtyczki wp-dbmanager i powinno działać :)

  10. Zacol (2 marca 2009, 0:15) #:

    @Iwonka: Pytałaś o to hasło i rozmowa trochę się rozwinęła. Przeczytaj ostatnie komentarze: http://wpninja.pl/wordpress-271/

  11. Jacek Krużycki (28 czerwca 2009, 14:11) #:

    A u mnie nie działa :/

  12. gam79 (9 kwietnia 2010, 17:43) #:

    Witam,

    Uruchamiając poniższy kod zmienna licznik_koncert powinna być zwiększana o jeden co jedną godzinę. Niestety funkcja się nie uruchamia.
    Sprawdzając za pomocą wtyczki Cron GUI polecenie jest dodawane i czas tak jak powinno być zmienia się co godzinę.

    //cron***********************
    add_action(‘spamblog_dodaj_posty_hook1’, ‘skan_koncert’);

    function scan_koncert(){
    $l=0; $l=get_option(‘licznik_koncert’); $l++; update_option(‘licznik_koncert’, $l);
    }

    if (get_option(‘myPlugin_aktywny1’)==‘1’ ) { }else{ update_option(‘myPlugin_aktywny1’, ‘1’); spamblog_activate1(); } //register_activation_hook(__FILE__, ‘spamblog_activate1’ );
    register_deactivation_hook(__FILE__, ‘spamblog_deactivate1’ );

    function spamblog_activate1() {
    wp_schedule_event( time(), ‘hourly’, ‘spamblog_dodaj_posty_hook1’ );
    }
    function spamblog_deactivate1() {
    wp_clear_scheduled_hook(‘spamblog_dodaj_posty_hook1’);
    delete_option(‘myPlugin_aktywny1’);
    }
    //cron**************************************

    Funkcja register_activation_hook(__FILE__, ‘spamblog_activate1’ ); też nie działa. Zastąpiłem ją następującym kodem:
    if (get_option(‘myPlugin_aktywny1’)==‘1’ ) { }else{ update_option(‘myPlugin_aktywny1’, ‘1’); spamblog_activate1(); }

    Korzystam z najnowszego wordpressa. Czy ktoś może spotkał się z takim problemem?

Dodaj własny komentarz