Cum să depanați evenimentele programate "Cron" wp_schedule_event în WordPress

31 mar. 2011, 17:24:53
Vizualizări: 51.4K
Voturi: 28

Cum pot depana problemele cu WordPress Cron? Știu că acesta se va declanșa când utilizatorii accesează site-ul, dar eventualele erori nu vor fi afișate acestora, deoarece sarcinile sunt executate "asincron". Așadar, cum aș putea depana erorile?

Folosesc wp_schedule_event

1
Comentarii

Folosește plugin-ul Advanced Cron Manager

Guest Guest
6 mar. 2017 23:44:44
Toate răspunsurile la întrebare 4
6
36

Puteți rula manual WP cron accesând: http://example.com/wp-cron.php?doing_wp_cron

Dacă nu doriți ca cron-ul automat să ruleze în timp ce faceți depanare, adăugați următoarea linie în fișierul /wp-config.php:

define('DISABLE_WP_CRON', true);

Dacă lucrați într-un mediu de dezvoltare și doriți să afișați informații de depanare, accesând manual cron-ul așa cum este descris mai sus vă va permite să vedeți aceste informații.

Alternativ, puteți folosi funcția PHP încorporată error_log pentru a înregistra mesaje în jurnalul de erori în scopul depanării. Va trebui să utilizați această funcție împreună cu setările WP_DEBUG, așa cum a menționat Rarst.

31 mar. 2011 21:15:43
Comentarii

Mulțumesc pentru indiciu cu parametrul ?doing_cron.

Roman Roman
31 mar. 2011 22:11:30

Cred că ar trebui să fie ?doing_wp_cron în loc de ?doing_cron.

liviucmg liviucmg
23 apr. 2015 13:14:17

@liviucmg Da, ai dreptate. Am făcut modificarea.

Simon East Simon East
4 aug. 2015 08:14:35

Este necesar parametrul ?doing_wp_cron? Vezi tutorialul de configurare manuală de la EasyCron.

Alec Rust Alec Rust
3 sept. 2016 14:25:11

@gabrielk Este necesar parametrul ?doing_cron? Ce înseamnă?

jedi jedi
23 feb. 2017 11:31:05

Cum poți testa un anumit job? wp-cron.php?doing_wp_cron={hook} nu pare să funcționeze pentru mine.

ahinkle ahinkle
10 aug. 2022 16:18:53
Arată celelalte 1 comentarii
1
10

Puteți face depanarea manual, creând o acțiune și executând acțiunea Cron în interior. Astfel:

add_action( 'init', function() {

    if ( ! isset( $_GET['the_cron_test'] ) ) {
        return;
    }

    error_reporting( 1 );

    do_action( 'this_is_cron_event_hook' );

    die();

} );

Și accesând adresa site-ului dvs.: http://example.com?the_cron_test

Aceasta ar trebui să vă arate orice erori legate de sarcina cron.

Dar nu are niciun sens să o faceți manual. Puteți folosi pluginul Advanced Cron Manager PRO care face asta pentru dvs. și, de asemenea, salvează jurnalul și alte statistici.

24 iul. 2017 16:28:14
Comentarii

Aceasta este cea mai bună metodă, deoarece cele prezentate mai sus (și mai jos) nu afișează nicio ieșire.

Ciprian Ciprian
15 sept. 2021 15:29:31
0

Poți utiliza plugin-ul Cron-View. Acolo poți vedea dacă job-ul tău este a) înregistrat și b) care este următoarea dată de execuție.

În plus, poți adăuga un interval mai mic pentru evenimentul tău (de exemplu la fiecare 2 minute) și să testezi metoda mai frecvent pe un sistem local. Folosește filter hook-ul 'cron_schedules' pentru a înregistra noi intervale de timp. De exemplu:

function my_additional_schedules($schedules) {
    // interval în secunde
    $schedules['every2min'] = array('interval' => 2*60, 'display' => 'La fiecare două minute');
    return $schedules;
}
add_filter('cron_schedules', 'my_additional_schedules');
31 mar. 2011 18:22:34
0

Puteți (și probabil ar trebui în orice caz, cron sau nu) să configurați jurnalul de erori PHP pentru a captura toate erorile.

31 mar. 2011 18:10:30