16.3. Prüfen, ob ein Cron bereits geplant wurde

In unserem Beispiel hat sich noch ein kleiner Fehler eingeschlichen. Was ist, wenn die Deaktivierung des Plugins nicht klappt oder wenn das Plugin ganz ohne Deaktivierung einfach (z.B. via FTP) entfernt wird? Dann wird der Cron nicht entfernt und bleibt bestehen. An sich nichts tragisches, denn die Funktion, die für das Abrufen des Wetters zuständig ist, gibt es dann nicht mehr.

Problematisch ist es nur dann, wenn das Plugin erneut aktiviert wird. Denn nun wird ein weiterer Cron mit dem selben Namen angelegt und es gibt dann plötzlich mehr als nur Einen.

Mit der WP-CLI kann man sich auf Konsolen-Ebene die aktuellen Cronjobs ausgeben lassen. Wäre es zum oben genannten Fehler gekommen, würde eine Liste ungefähr so aussehen:

+--------------------------------+---------------------+-----------------------+------------+
| hook                           | next_run_gmt        | next_run_relative     | recurrence |
+--------------------------------+---------------------+-----------------------+------------+
| wwi_update_weather             | 2018-02-26 09:30:21 | now                   | 1 Stunde   |
| wwi_update_weather             | 2018-02-26 10:28:50 | 58 minutes 26 seconds | 1 Stunde   |
| wp_version_check               | 2018-02-26 15:09:41 | 5 Stunden 39 minutes  | 12 Stunden |
| wp_update_plugins              | 2018-02-26 15:09:41 | 5 Stunden 39 minutes  | 12 Stunden |
| wp_update_themes               | 2018-02-26 15:09:41 | 5 Stunden 39 minutes  | 12 Stunden |
| wp_scheduled_delete            | 2018-02-27 03:10:26 | 17 Stunden 40 minutes | 1 Tag      |
| delete_expired_transients      | 2018-02-27 03:10:26 | 17 Stunden 40 minutes | 1 Tag      |
| wp_scheduled_auto_draft_delete | 2018-02-27 03:11:19 | 17 Stunden 40 minutes | 1 Tag      |
+--------------------------------+---------------------+-----------------------+------------+

Wie Sie sehen: den Hook wwi_update_weather gibt es nun zweimal. Und tatsächlich wird er auch zweimal ausgeführt. Das ist unnötig.

Deshalb brauchen wir an dieser Stelle die Funktion:

You’re not allowed to see this content. Please log in first.

Schreiben Sie einen Kommentar