Ein echter Cron für WordPress

WordPress ist schön, WordPress ist toll, WordPress ist das Beste überhaupt – der Cron ist ne Zumutung! Irgendwann muss man wohl irgendwo beschlossen haben, das WordPress auch von Affen mit einer blonden Perücke bedienbar sein muss – ist es ja auch. Was dem ganz immens im Wege stand, war jedoch der Cron. Denn er ist technisch nicht einfach einzurichten (man braucht in der Regel Shell-Zugriff) was ergo dazu führt, dass die meisten Hoster keinen Cron anbieten. Heutzutage kann einem ein Dienst wie zum Beispiel cronjob.de locker bei den Crons helfen.

In Drupal existiert eine ähnliche Lösung wie in WordPress: der Poormanscron. Dort wird in Verbindung mit Javascript der Cron ausgeführt, sobald ein Benutzer die Seite besucht. In WordPress hat man scheinbar auf das JavaScript verzichtet und führt den Cron ebenfalls bei einem Besuch der Website aus – allerdings direkt via PHP. Beide Systeme besitzen den großen Nachteil, dass man erstmal einen Besucher haben muss, bevor der Cron anspringt. Zumindest für WordPress gilt aber auch, dass der Cron scheinbar nicht immer sicher läuft.

Erschwerend kommt hinzu, dass bei WordPress und Drupal dem Benutzer die Ausführung des Crons untergeschoben wird, keine feine Sache, wie ich finde. Also was tun? Richtig – falschen Cron raus, richtigen Cron rein. Auch bei Drupal – immer!

Bei WordPress muss zunächst in der wp-config.php die „normale“ Ausführung des Crons mittels der folgenden Zeile unterbunden werden:

define('DISABLE_WP_CRON', true);

Dann muss ein Cron auf die URL http://www.mein-blog.de/wp-cron.php eingerichtet werden. Einmal am Tag reicht nicht! Bei mir läuft der Cron in der Regel alle 30 Minuten, da WordPress durchaus Plugins besitzt, die stündlich losrattern wollen. In diesem Zusammenhang kann ich auch das WordPress Plugin WP-Crontrol empfehlen, mit dem man sich zum einen angucken kann, was der Cron so treibt, zum anderen aber auch Cron Tasks manuell starten kann.

Ähnliche Beiträge

Kommentare des Autors hervorheben Immer wieder stolpere ich über Blog-Betreiber, die ziemlich fluchen, weil die eigenen Kommentare nicht vernünftig hervorgehoben werden. Die Lösung ist...
WordPress mit Types & Views Die mit Abstand besten und am meisten gebrauchten Plugins in Drupal sind das Content Creation Kit und Views. Vom Prinzip her also ein Modul um beliebi...
In WordPress die Leser für neue Themenvorschläge i... Ich gebe zu der Titel ist äußerst bescheiden, aber was Besseres ist mir nicht eingefallen! Ich beobachte seit geraumer Zeit ein kleines Tool bei phpha...
Font Awesome in den Advanced Custom Fields von Wor... Gab es ein Leben vor Font Awesome? Es gibt kaum eine Seite die den Webfont nicht benutzt. Genau sowenig gibt es noch eine WordPress-Seite die ohne die...

5 Antworten auf „Ein echter Cron für WordPress“

  1. Pingback: Linkhub – Woche 47-2010 | pehbehbeh
  2. Ich habe mir gerade ein kleines Shell-Script als Helfer gebastelt:

    #!/bin/bash

    IFS="
    "

    CURL=/usr/bin/curl
    DBUSER=[datenbank username einfügen]
    DBPASS=[datenbank passwort einfügen]
    DBHOST=[name oder ip des datenbankservers, z.B. localhost]
    DBDATABASE=[name der datenbank, z.B. wordpress]
    DBTABLE=wp_blogs [in der Regel das hier, bei anderem Prefix anpassen]

    for line in `echo "SELECT domain FROM $DBTABLE WHERE deleted = 0" | mysql -u $DBUSER -h $DBHOST --password=$DBPASS $DBDATABASE`; do
    if test $line != "domain"; then
    $CURL http://$line/wp-cron.php
    fi;
    done

    Das Ding zieht sich einfach die aktuelle Blog-Liste aus der Datenbank und ruft dann nacheinander die cron-scripte auf.

    Der angegebene Datenbank-User braucht nur LESE-Zugriff auf der im Script angegebenen Tabelle. Aus Sicherheitsgründen würde ich ihm auch nicht mehr geben.

    Wer kein curl installiert hat kann alternativ auch z.B. wget, lynx oder links verwenden – entsprechende Aufrufparameter vorausgesetzt.

  3. Ich muss leider widersprechen: Zumindest in meinem WordPress 3.0.1 MultiSite System reicht definitiv nicht ein einzelner CRON Aufruf.

    Ich muss definitiv jeden einzelnen Blog aufrufen um dafür zu sorgen, dass die WordPress Jobs sauber laufen.

  4. Ein System – ein Cron: ein Aufruf genügt! Du hast ja auch nur eine wp-config.php ;) Die Ausführung dauert dann nur ggf. wesentlich länger was dann wiederum dafür spricht, einen „richtigen“ Cron zu verwenden.

  5. Gehe ich recht in der Annahme, dass man – wenn man die Multisite-Option von WordPress nutzt – den CRON für jede einzelne Unterseite aufrufen muss? Wäre viel praktischer, wenn da ein einzelner Aufruf reichen würde, aber ich gehe mal davon aus, dass es das nicht tut, oder?

    Gibt es da eine einfache Möglichkeit, das zu automatisieren? So was wie curl auf eine URL um alle existierenden Sites aufzulisten und dann im Shell-Script einfach durch alle Einträge in der Liste durchloopen?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.