Wordpress Cron ist nicht für Amazon Web Services geplant

8

Ich versuche, ein Cron so einzurichten, dass es jede Stunde ausgeführt wird. Es funktioniert gut auf meiner lokalen Vagabundbox, aber es scheint nicht richtig auf aws (elastische Bohnenstange) zu planen. Hier ist der Code:

register_activation_hook(__FILE__, 'my_activation');
add_action('my_hourly_event', 'do_this_hourly');

function my_activation() {
    wp_schedule_event(time(), 'hourly', 'my_hourly_event');
}

function do_this_hourly() {
    another_function();
}

register_deactivation_hook(__FILE__, 'my_deactivation');

function my_deactivation() {
    wp_clear_scheduled_hook('my_hourly_event');
}

stimmt etwas nicht oder spielt etwas anderes?

Ich habe den w3-Gesamtcache sowohl lokal als auch auf aws installiert, daher glaube ich nicht, dass dies daran schuld wäre, wie ich gehört habe.

Vielen Dank.

aabreu
quelle
2
Die WordPress-Cron-API basiert (standardmäßig) auf einem HTTP-Treffer. Wenn Ihr Setup aggressiv zwischengespeichert wird, wird WordPress möglicherweise nie ausgelöst (oder zumindest nicht häufig genug), um Cron auszulösen. Vielleicht möchten Sie lesen, wie Sie cron in WordPress "richtig" einrichten .
TheDeadMedic
1
Danke für die schnelle Antwort! Ich habe angefangen, den von Ihnen bereitgestellten Link zu lesen, aber ich muss beachten, dass der Cron niemals geplant ist und nicht ausgegeben wird, wenn Folgendes ausgeführt wird: $ cron_jobs = get_option ('cron'); print_r ($ cron_jobs);, während lokal dasselbe Snippet mir zeigt, wonach ich suche.
Aabreu
Haben Sie das Debuggen aktiviert ?
TheDeadMedic
Vor Ort ja, nicht auf dem Server.
Aabreu
Schalten Sie es ein und aktivieren Sie das Plugin, um festzustellen, ob Fehler auftreten.
TheDeadMedic

Antworten:

1

Grundsätzlich sollten Sie nach dem Plugin-Aktivierungs-Hook nichts tun, was eine 'add_action' erfordert. Dies liegt daran, dass WP alle Plugins lädt und ausführt und DANN das neu hinzugefügte ausführt und dann eine Umleitung durchführt. Sie müssen eine DB-Option festlegen und diese einbinden. Hier ist die Diskussion aus dem CODEX: https://codex.wordpress.org/Function_Reference/register_activation_hook

Versuchen Sie dies außerhalb des Aktivierungs-Hooks und sehen Sie, was passiert. Mit anderen Worten, PHP durchläuft bei jeder Browseranforderung die gesamte Wordpress-Routine. Wenn Sie ein Plugin "aktivieren", lösen Sie tatsächlich zwei Seitenanforderungen an den Server aus. Diese Art von Aktivität wird ordnungsgemäß in der Anforderung der 2. Seite ausgeführt, bei der es sich um die Umleitung handelt.

Jim Maguire
quelle
0

Sie können die folgenden Schritte ausführen, um es zum Laufen zu bringen: ` 1. Richten Sie einen Zeitplan ein

function my_schedule( $schedules ) {
    $schedules['hourly'] = array(
        'interval' => 60 * 60,
        'display' => __( 'One houre' )
    );
    return $schedules;
}
add_filter( 'cron_schedules', 'my_schedule' );

2. Registrieren Sie den Aktivierungshaken

register_activation_hook( __FILE__, 'my_activation' );

function my_activation() {
    $timestamp = wp_next_scheduled( 'my_hourly_event' );
    if( false == $timestamp ){
        wp_schedule_event( time(), 'hourly', 'my_hourly_event' );
    }
}

3. Fügen Sie dem Ereignis eine Aktion hinzu

function do_this_hourly() {
    // The cron functionality and rest of your code here
}
add_action( 'my_hourly_event', 'do_this_hourly' );
Pmpr
quelle