Kategorien
Optimierung

Hintergrundverarbeitung mit Cronjobs

Wozu braucht man im Zusammenhang mit der eigenen Website so etwas wie Hintergundverarbeitung? Was ist das überhaupt? Und was, zum Teufel, sind „Cronjobs“? – Keine Angst: Wenn Du kein*e Informatiker*in oder Programmier*in bist, brauchst Du das nicht zu wissen. Wenn man sich allerdings mit dem Thema Optimierung von WordPress-Installationen befasst, ist es hilfreich, zumindest zu verstehen, welche Abläufe man im Hintergrund verarbeiten könnte. In diesem Beitrag erkläre ich für Nicht-Programmierer, was man drüber wissen sollte.

Eigentlich sollten alle WordPress-Verwender zumindest eine immer wiederkehrende Tätigkeit automatisch im Hintergrund ausführen lassen; nämlich den Backup der Installation. Warum es so wichtig ist, in regelmäßigen Abständen Backups (also Sicherheitskopien) der Website anzulegen, und wie man das macht, erkläre ich in einem separaten Beitrag.

Alle üblichen Backup-Plugins bieten an, Sicherheitskopien manuell durchführen oder in immer gleichen Zeitintervallen automatisch erzeugen zu lassen. Zum Beispiel monatlich, wöchentlich, täglich oder sogar mehrmals täglich. Solche automatischen Aktionen kann man über einen WordPress-internen Mechanismus anstoßen lassen. Der „WordPress-Cronjob“ enthält eine Liste von Tätigkeiten und ihre gewünschten Ausführungszeitpunkte.

Allerdings solltest Du Dir vor Augen halten, dass Deine WordPress-Installation kein schlummernder Dämon ist, der von selbst alle Nasen lang aufwacht und alles erledigt, was in der Zwischenzeit angefallen ist. WordPress besteht lediglich aus einer großen Menge von Dateien, die auf Deinem Webserver liegen und darauf warten, von Deinen Besuchern aufgerufen zu werden. Erst dann, sobald also eine Deiner Webseiten aufgerufen wird, erwacht WordPress zum Leben und kann dann endlich die integrierten Cronjobs ausführen.
Wenn Du also eine weitgehend unbekannte Internetpräsenz betreibst, die nur selten aufgerufen wird, dann wird auch die Liste der Tätigkeiten nur selten ausgeführt. Um beim Backup-Beispiel zu bleiben: Sicherheitskopien werden nur dann angelegt, wenn zuvor ein Besucher eine Deiner Seiten aufgerufen hat. (Das kannst Du natürlich auch selbst erledigen, indem Du Deine eigene Website einmal täglich oder einmal wöchentlich aufrufst. Aber das ist nur eine Behelfsmaßnahme. Denn was passiert, wenn Du im Urlaub bist? Oder wenn Du nach einiger Zeit nicht mehr daran denkst, Deine WordPress-Installation aufzuwecken? – Richtig: Dann passiert nichts.)

Hinweis: Dieses Problem haben Internetseiten nicht, die wenigsten ein paar Male am Tag aufgerufen werden. Aber auch dann ist nicht gewährleistet, dass der WordPress-Cronjob seine Aufgaben auch zur gewünschten Uhrzeit ausführt. Zum Beispiel kurz nach Mitternacht.

Beispiele für Hintergrundverarbeitung

Damit wir hier nicht ständig im Nebel stochern, habe ich einmal ein paar Beispiele für Hintergrundtätigkeiten aufgeschrieben:

  • Regelmäßige Backup-Läufe aus Sicherheitsgründen
  • Aufräumarbeiten in Datenbanktabellen
    (Es wird immer vorkommen, dass Seitenbesucher bestimmte Einträge anstoßen, die aber womöglich nicht vollständig abgeschlossen werden können. Dadurch entstehen Datenleichen, die ab und zu weggeräumt werden sollten, damit die Datenbank immer problemlos und schnell funktioniert.)
  • Umsortieren von Listen, um Besuchern ein wenig Abwechslung bieten zu können
    (Auf einer der Seiten eines literarischen Projekts, das ich betreibe, gibt es eine sogenannte Blogroll. Das ist eine Liste von Nachbarseiten, deren Aufrufe ich meinen eigenen Besuchern empfehle. Damit es in dieser Liste ein bisschen Abwechslung gibt und wirklich alle Seiten auch mal ganz oben stehen, lasse ich diese Liste täglich nachts zufällig umsortieren.)
  • Aktualisieren der Anzeige von Kalendereinträgen
    (Stell Dir vor, Du bietest Deinen Besuchern zum Beispiel einen Geburtstagskalender bestimmter Personen an. Du könntest diesen Kalender bei jedem Aufruf Deiner Seiten erneut aktualisieren lassen. Auch dann, wenn er am gleichen Tag schon zuvor zigmal aktualisiert wurde. Ökonomischer wäre es allerdings, den Kalender nur einmal täglich automatisch aktualisieren zu lassen. Damit sparst Du Rechenzeit auf Deinem Server und verkürzt die Aufrufzeit Deiner Seiten für Besucher.)
  • Dynamische Gestaltung von Websiten
    (Möchtest Du Fotos auf Deinen Webseiten automatisch ändern lassen? Oder die gesamte Gestaltung – Stichwort CSS-Dateien – an bestimmte Zeiten anpassen lassen? Zum Beispiel im Sommer andere Bilder als im Winter? Bei Ebbe andere Fotos als bei Flut? Bei Seitenaufrufen tagsüber heller Hintergrund und nachts dunkler? Solche Anpassungen könntest Du sekundengenau über Cronjobs steuern.)
  • Wöchentliche oder monatliche Abrechnungsläufe
    (Wer auf seinen Webseiten kostenpflichtige Inhalte anbietet, also zum Beispiel den Download bestimmter Informationen, könnte mit Cronjobs regelmäßig für alle Benutzer Dateiabrufe zusammenfassen und darauf aufbauend einen automatischen Rechnungsversand per E-Mail anstoßen.)
  • Weitere Ideen:
    • Newsletterversand, wenn Du dafür kein Plugin verweden möchtest
    • Besucherstatistiken täglich, wöchentlich, monatlich zusammenfassen
    • Hintergrundinformationen von anderen Webseiten einsammeln, zum Beispiel stündliche Wetterdaten oder aktuelle Nachrichten, die Du dann auf Deinen Seiten verarbeitest. (Beachte aber, dass auch hier das Urheberrecht Anwendung findet. Finde also vorab heraus, was Du verwenden darfst.)

Einrichten von Cronjobs

Dass WordPress selbst bereits bestimmte Hintergrundverarbeitungen anstößt, habe ich bereits erwähnt. Aber ich habe auch darauf hingewiesen, dass man sich keinesfalls auf eine präzise zeitliche Ausführung verlassen kann.

Es gibt zwei weitere Möglichkeiten, die ich im folgenden kurz erläutere:

  1. Crontab-Mechanismen der Webspace-Anbieter:
    Manche Webhoster bieten ihren Kunden Tabellen an, in die man PHP-Scripte eintragen kann, die in bestimmten Zeiträumen automatisch ausgeführt werden. Unabhängig davon, ob die eigene Internetseiten von Besuchern aufgerufen wurden oder nicht. Die leidige Erfahrung zeigt jedoch, dass solche Angebote nicht immer verlässlich funktionieren.
  2. Direkter Zugriff auf Cronjob-Tabellen des Servers:
    Die meisten Webserver bieten eine sogenannte SSH-Schnittstelle an, auf die man mit speziellen Programmen zugreifen und dann festlegen kann, welche Befehle oder welche PHP-Scripts zu welchen Zeitpunkten ausgeführt werden sollen. Zu dieser Möglichkeit findest Du in einem separaten Beitrag detaillierte Information.

Die zweite Möglichkeit sollte für Dich das Mittel der Wahl sein, wenn Du selbst zeitgesteuerte Hintergrundverarbeitung verlässlich anstoßen möchtest. Allerdings benötigst Du in beiden Fällen zumindest grundlegende Programmierkenntnisse.

***

Von Ulf Brossmann

Betreiber von und Autor der Beiträge auf WordPress fassbar. Eine Kurzbiografie von Ulf findest Du am unteren Ende der Seite über diese Website. Hier folgen nun alle Artikel, die Ulf bisher verfasst hat, in umgekehrt chronologischer Reihenfolge, also der neuste zuoberst:

Schreibe einen Kommentar

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