it-swarm.com.de

Wie plane ich Cron in WordPress für jede Sekunde?

Ich möchte einen Cron-Job in Wp3.5.1 planen, um E-Mails an Kunden zu senden, deren Termin aussteht.

hier versuche ich Code:

Für den Test plane ich Mais für jede Sekunde, um eine Zeile in die Tabelle einzufügen.

// insert row every second
add_action('wp', 'my_activation');
function my_activation() {
    if ( !wp_next_scheduled( 'my_event' ) ) {
        wp_schedule_event( time(), 'hourly', 'my_event');
    }
}

add_action('my_event', 'do_this_event');
function do_this_event() {
    global $wpdb;
    $wpdb->query("INSERT INTO `wordpress-testing`.`wp_test` (`id`, `text`) VALUES (NULL, 'b');");
}

wp_get_schedules('my_event');

//custom recurrence
add_filter( 'cron_schedules', 'cron_add_every_sec' );
function cron_add_every_sec( $schedules ) {
    $schedules['hourly'] = array(
        'interval' => 1,
        'display' => __( 'Do Secondly' )
    );
    return $schedules;
}

Darf ich falsch machen. Also bitte hilf mir durch.

Wird cron nach der Aktivierung automatisch ausgeführt, sobald OR ein wiederkehrender Besuch nach Ablauf der festgelegten Zeit erforderlich ist?

1
Frank

Ich halte es nicht für sinnvoll, dass jede Sekunde ein Cron ausgeführt wird, aber die Funktion selbst ist recht einfach.

Sie fügen dem cron_schedules einen Filter hinzu:

function f711_add_seconds( $schedules ) {
    $schedules['everysecond'] = array(
        'interval' => 1,
        'display' => __('Every Second')
    );
    return $schedules;
}
add_filter( 'cron_schedules', 'f711_add_seconds' ); 

Sie können jetzt everysecond in Ihrem wp_schedule_event anstelle der hourly verwenden.

Beachten Sie, dass der Cron nicht jede Sekunde ausgeführt wird, wenn auf Ihrer Site nichts passiert, sondern auf max. eine Ausführung pro Sekunde. Cron legt in Ihrer options- Tabelle einen Wert für einen Zeitstempel fest, bei dem die Funktion das nächste Mal ausgeführt werden soll. Dann prüft Cron, ob die Zeit in der Zukunft oder in der Vergangenheit liegt, und wenn sie in der Vergangenheit liegt, wird die Funktion ausgeführt. Der Cron wird zu diesem Zeitpunkt automatisch ausgeführt, muss jedoch erneut eingestellt werden. Achten Sie also darauf, die

if ( !wp_next_sceduled('my_event') ) { /* scheduling code */ }

in deinem Code.

Weitere Informationen zur Funktionsweise von Cron finden Sie auf der Codex-Seite .

Sie sollten die hourly nicht so überschreiben, wie Sie es getan haben, da einige Funktionen diesen Zeitplan möglicherweise verwenden. Bitte beachten Sie, dass einige Plugins Ihre Cronschedule löschen können, wenn sie nicht richtig codiert sind (hatten ein solches Caching-Plugin einmal).

6
fischi