Come debuggare il "Cron" wp_schedule_event di WordPress

31 mar 2011, 17:24:53
Visualizzazioni: 51.4K
Voti: 28

Come posso debuggare i problemi con il Cron di WordPress? So che si attiva quando gli utenti visitano il sito, ma eventuali errori non saranno mostrati a loro, poiché i lavori vengono eseguiti in modo "asincrono". Quindi come posso debuggare gli errori?

Uso wp schedule event

1
Commenti

Usa il plugin Advanced Cron Manager

Guest Guest
6 mar 2017 23:44:44
Tutte le risposte alla domanda 4
6
36

Puoi eseguire manualmente WP cron chiamando: http://example.com/wp-cron.php?doing_wp_cron

Se non vuoi che il cron automatico venga eseguito mentre stai eseguendo il debug, aggiungi questo al tuo file /wp-config.php:

define('DISABLE_WP_CRON', true);

Se ti trovi in un ambiente di sviluppo e vuoi visualizzare le informazioni di debug, chiamandolo manualmente in questo modo ti mostrerà l'output di debug.

In alternativa puoi usare la funzione integrata di PHP error_log per registrare messaggi stringa nel log degli errori per il debug. Dovrai usarla insieme alle impostazioni WP_DEBUG, come menzionato da Rarst.

31 mar 2011 21:15:43
Commenti

Grazie per il suggerimento con il parametro ?doing_cron.

Roman Roman
31 mar 2011 22:11:30

Credo che dovrebbe essere ?doing_wp_cron invece di ?doing_cron.

liviucmg liviucmg
23 apr 2015 13:14:17

@liviucmg Sì, hai ragione. Ho apportato la modifica.

Simon East Simon East
4 ago 2015 08:14:35

Il parametro ?doing_wp_cron è obbligatorio? Vedi il tutorial di configurazione manuale di EasyCron.

Alec Rust Alec Rust
3 set 2016 14:25:11

@gabrielk Il parametro ?doing_cron è obbligatorio? Cosa significa?

jedi jedi
23 feb 2017 11:31:05

Come si testa un job specifico? wp-cron.php?doing_wp_cron={hook} non sembra funzionare per me.

ahinkle ahinkle
10 ago 2022 16:18:53
Mostra i restanti 1 commenti
1
10

Potresti eseguire il debug manualmente, creando un'azione ed eseguendo l'azione Cron all'interno. In questo modo:

add_action( 'init', function() {

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

    error_reporting( 1 );

    do_action( 'this_is_cron_event_hook' );

    die();

} );

E accedendo all'indirizzo del tuo sito web: http://example.com?the_cron_test

Questo dovrebbe mostrarti eventuali errori relativi al task cron.

Ma non ha molto senso farlo manualmente. Potresti utilizzare il plugin Advanced Cron Manager PRO che fa questo per te e salva anche il log e altre statistiche.

24 lug 2017 16:28:14
Commenti

Questo è il metodo migliore, poiché quelli descritti sopra (e sotto) non mostrano alcun output.

Ciprian Ciprian
15 set 2021 15:29:31
0

Potresti utilizzare il plugin Cron-View. Lì puoi verificare se il tuo job è a) registrato e b) qual è la prossima ora di esecuzione.

Inoltre, potresti aggiungere un intervallo di schedulazione più breve al tuo evento (ad esempio ogni 2 minuti) e testare il tuo metodo più frequentemente su un sistema locale. Usa l'hook del filtro 'cron_schedules' per registrare nuovi intervalli di tempo. Per esempio:

function my_additional_schedules($schedules) {
    // intervallo in secondi
    $schedules['every2min'] = array('interval' => 2*60, 'display' => 'Ogni due minuti');
    return $schedules;
}
add_filter('cron_schedules', 'my_additional_schedules');
31 mar 2011 18:22:34
0

Puoi (e probabilmente dovresti farlo in ogni caso, con o senza cron) configurare il log degli errori di PHP per registrare tutti gli errori.

31 mar 2011 18:10:30