So debuggen Sie WordPress "Cron" wp_schedule_event

22

Wie kann ich Probleme mit WordPress Cron beheben? Ich denke, es wird ausgelöst, wenn Benutzer zu Ihrer Site gehen, aber alle Fehler werden ihnen nicht angezeigt, da die Jobs "asynchron" ausgeführt werden. Wie kann ich Fehler debuggen?

ich benutze wp schedule event

Jiew Meng
quelle
1
Lesen Sie diese Dokumentation: developer.wordpress.org/plugins/cron/…
Nanhe Kumar
Verwenden Sie das Advanced Cron Manager Plugin
Guest

Antworten:

27

Sie können WP cron manuell ausführen, indem Sie Folgendes aufrufen: http://example.com/wp-cron.php?doing_wp_cron

Wenn Sie nicht möchten, dass der automatische Cron während des Debuggens ausgeführt wird, fügen Sie Folgendes zu Ihrer /wp-config.phpDatei hinzu:

define('DISABLE_WP_CRON', true);

Wenn Sie sich in einer Entwicklungsumgebung befinden und Debug-Informationen ausgeben möchten, wird bei einem manuellen Aufruf Ihre Debug-Ausgabe angezeigt.

Alternativ können Sie die in PHP integrierte error_log- Funktion verwenden, um Nachrichtenzeichenfolgen zum Debuggen im Fehlerprotokoll zu protokollieren. Sie müssen dies in Verbindung mit WP_DEBUG-Einstellungen verwenden , wie von Rarst erwähnt.

gabrielk
quelle
Vielen Dank für den Hinweis mit dem ?doing_cronParameter.
rofflox
3
Ich glaube, es sollte ?doing_wp_cronstattdessen sein ?doing_cron.
Liviucmg
@liviucmg Ja, du hast recht. Ich habe den Tweak gemacht.
Simon East
1
Ist der ?doing_wp_cronParameter erforderlich? Weitere Informationen finden Sie in der Anleitung zur Einrichtung von EasyCron .
AlecRust
@gabrielk Ist der Parameter? doing_cron erforderlich? Was heißt das?
Jedi
6

Sie können das Plugin Cron-View verwenden . Dort können Sie sehen, ob Ihr Job a) registriert ist und b) wann der nächste fällige Zeitpunkt ist.

Zusätzlich können Sie Ihrer Veranstaltung einen niedrigeren Zeitplan hinzufügen (z. B. alle 2 Minuten) und Ihre Methode häufiger auf einem lokalen System testen. Verwenden Sie den Filter-Hook 'cron_schedules', um neue Zeitpläne zu registrieren. Beispielsweise:

function my_additional_schedules($schedules) {
    // interval in seconds
    $schedules['every2min'] = array('interval' => 2*60, 'display' => 'Every two minutes');
    return $schedules;
}
add_filter('cron_schedules', 'my_additional_schedules');
rofflox
quelle
3

Sie können manuell debuggen, indem Sie eine Aktion erstellen und die darin enthaltene Cron-Aktion ausführen. So was:

add_action( 'init', function() {

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

    error_reporting( 1 );

    do_action( 'this_is_cron_event_hook' );

    die();

} );

Und indem Sie zur Adresse Ihrer Website gehen: http://example.com?the_cron_test

Dies sollte Ihnen etwaige Fehler bei der Cron-Aufgabe anzeigen.

Aber es macht keinen Sinn, es manuell zu machen. Sie können das Advanced Cron Manager PRO- Plugin verwenden, das dies für Sie erledigt und auch das Protokoll und andere Statistiken speichert.

WPMaster
quelle