Cron-Job, der nur einmal pro Tag mit einem externen Cron-Service ausgeführt wird

Ich habe eine bestimmte Aufgabe, die einmal (und nur einmal) pro Tag ausgeführt werden muss. Wegen der Ungewissheit, mit der wp-cron jeden Tag läuft, verwende ich setcronjob.com, um das Skript zu aktivieren.

Die URL setcronjob.com Aufrufe sind:

http://mydomain.de/wp-cron.php?doing_wp_cron

Und Daily Exec in den Setcronjob.com-Einstellungen ist auf 1 festgelegt.

In wp-config.php habe ich die Zeile hinzugefügt:

define('DISABLE_WP_CRON', true); 

Das Skript selbst ist ein Plugin, der Code (abzüglich der Plugin-Sachen) ist unten:

 get_results("SELECT * FROM {$wpdb->users} WHERE date({$wpdb->users}.user_registered) = '" . $thenwas ."'"); foreach ( $renewals as $renewal ) { $thename = $renewal->display_name; $theemail = $renewal->user_email; $to = $theemail; $subject = 'Important information about your Subscription'; $message = 'Hi ' . $thename . ",\n\r\n\rIn five days your subscription will renew and another year's subscription (£45) will be taken from your PayPal account.\r\n\r\nIf you want to stay with us you don't need to do anything, it will happen automatically. If you want to cancel your subscription you can do this via your PayPal account, or if you prefer simply reply to this email or send a new email to us at info@mydomain.co.uk requesting for your subscription to be cancelled. \r\n\r\nRegards,\r\n\r\Kev from Domain Name."; $headers = 'From: info@mydomain.co.uk' . "\r\n" . 'Reply-To: info@mydomain.co.uk' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); } } function kl_create_single_schedule(){ //check if event scheduled before if(!wp_next_scheduled('kl_single_cron_job')) //schedule event to run after 1 day wp_schedule_single_event (time()+0001, 'kl_single_cron_job'); } ?> 

Was jedoch passiert, ist, dass das Plugin mehrmals am Tag läuft.

Habe ich recht, wenn ich an die Linie denke:

 wp_schedule_single_event (time()+0001, 'kl_single_cron_job'); 

Sollte eigentlich sein:

 wp_schedule_single_event (strtotime('+1 day'), 'kl_single_cron_job'); 

Solutions Collecting From Web of "Cron-Job, der nur einmal pro Tag mit einem externen Cron-Service ausgeführt wird"

wp_schedule_single_event $timestamp wp_schedule_single_event ist die Zeit, zu der das Ereignis stattfinden soll. Dies muss in einem UNIX-Zeitstempelformat erfolgen. WP Cron verwendet UTC / GMT Zeit, nicht lokale Zeit. Verwenden Sie time() , was in WordPress immer GMT ist.

time() Anzahl der Sekunden seit der Unix-Epoche

Wenn Sie einen Tag hinzufügen möchten, müssen Sie Sekunden hinzufügen:

 time() + (24 * 60 * 60) 

Sie möchten also Folgendes verwenden:

 if ( ! wp_next_scheduled( 'kl_single_cron_job' ) ) { wp_schedule_single_event( time() + 86400, 'kl_single_cron_job' ); } 

oder 'daily' mit wp_schedule_event :

 if ( ! wp_next_scheduled( 'kl_single_cron_job' ) ) { wp_schedule_event( time(), 'daily', 'kl_single_cron_job' ); }