Mein VariomediaHier können Sie sich im Kundenmenü einloggen. |
Weitere Logins |
Über Cronjobs können Sie Programme auf dem Webserver regelmäßig zeitgesteuert aufrufen. Sie können Cronjobs entweder mithilfe eines PHP-Scripts oder per SSH einrichten.
Falls Sie ein wenig mit der Unix-Shell vertraut sind, können Sie Cronjobs am einfachsten per SSH über den Terminal-Befehl crontab -e direkt auf dem Webserver erstellen und bearbeiten. Wenn Sie auf dem Server noch keinen Standard-Texteditor festgelegt haben, werden Sie dann zuerst nach dem gewünschten Editor gefragt, wir empfehlen mcedit.
Falls Sie kein SSH verwenden möchten, nutzen Sie unser vorgefertigtes PHP-Script zum Bearbeiten von Cronjobs, dass Sie hier herunterladen können. Kopieren Sie das Script per (S)FTP auf den Webserver, und rufen es dann über die Adressleiste in Ihren Web-Browser auf (z.B. "http://meine-domain.de/cron.php"). Damit keine Unbefugten Cronjobs einrichten können, müssen Sie aus Sicherheitsgründen Ihre FTP-Benutzerkennung angeben. Nach der Einrichtung der Cronjobs sollten Sie das Script wieder löschen.
Der Cron-Dienst wird über eine Crontab genannte Konfigurationsdatei gesteuert, in der Sie die gewünschten Programme und die Uhrzeit, zu der sie aufgerufen werden sollen, angeben.
Als erstes sollte über die Option MAILTO eine E-Mail-Adresse angegeben werden, an die sämtliche Ausgaben des Cronjobs gesendet werden:
MAILTO="webmaster@beispieladresse.de"
Falls Sie keine Ausgaben per E-Mail erhalten möchten, geben Sie bitte "" als E-Mail-Adresse an:
MAILTO=""
Wenn Sie diese Option nicht angeben, werden sämtliche Ausgaben an das lokale Postfach Ihres Webserver-Benutzeraccounts zugestellt. Dieses Postfach wird normalerweise nicht genutzt, da es nicht einfach per POP3 bzw. IMAP abgerufen werden kann, sondern nur über die Kommandozeile per SSH.
In den folgenden Zeilen können Sie dann die aufzurufenden Programme sowie die Uhrzeit angeben. Die Zeitangabe erfolgt dabei immer am Anfang der Zeile in der Form Minute Stunde Tag Monat Wochentag, dann folgt das Programm mit den gewünschten Optionen. Im folgendem Beispiel soll täglich um 01:00 Uhr früh ein PHP-Script per HTTP aufgerufen werden:
0 1 * * * curl --silent -S "https://www.variomedia.de/index.php"
Die Zeitangaben sind nach folgender Struktur aufgebaut:
Minute: 0 bis 59 oder * für jede Minute
Stunde: 0 bis 24 oder * für jede Stunde
Tag (Monat): 1 bis 31 oder * für jeden Tag
Monat: 1 bis 12 bzw. jan bis dec oder * für jeden Monat
Wochentag: 1 (Montag) bis 7 (Sonntag) bzw. mon bis sun oder * für jeden Wochentag
Für Sonntag kann 7 oder 0 genutzt werden. Tag und Wochentag werden unabhängig voneinander ausgewertet, der Cronjob wird ausgeführt, sobald eins von beiden Kriterien zutrifft.
Es lassen sich auch komplexe Zeitangaben realisieren, so wird im folgenden Beispiel das Script zu jeder Minute 33, alle zwei Stunden eines Tages, aber nur Montags bis Freitags ausgeführt:
33 */2 * * 1-5 curl --silent -S "https://www.variomedia.de/index.php"
In den bisherigen Beispielen wird das Programm curl benutzt, um ein PHP-Script per HTTP über den Webserver aufzurufen, die Optionen --silent -S unterdrücken unerwünschte Statusmeldungen. Sie können PHP-Scripte auch direkt ausführen, indem Sie diese mittels php und dem Namen des Scripts (z.B. php index.php) aufrufen. Das Startverzeichnis für Cronjobs ist Ihr Benutzerverzeichnis, so dass Sie hier keine absoluten Pfadangaben (z.B. "/homepages/u12345/index.php") nutzen müssen.
Falls Sie einfach nur php aufrufen, wird der PHP-Kommandozeileninterpreter in der Standard-PHP-Version Ihres Webservers benutzt, die sich unter Umständen von der für Ihrer Webseite genutzten PHP-Version unterscheidet. Auf den Webservern sind mehrere unterschiedliche PHP-Versionen verfügbar, abweichende PHP-Versionen können in Cronjobs durch hinzufügen der PHP-Version (ohne Punkt) genutzt werden, z.B. php74 für PHP Version 7.4:
* * * * * php74 artisan scheduled:run > /dev/null
Für Cronjobs sollte immer die PHP-Kommandozeilenversion php-cli genutzt werden, da hier Fehlerausgaben ohne störende HTML-Tags ausgegeben werden, und die Scriptlaufzeit (max_execution_time) nicht begrenzt ist.
Hinweis: Beachten Sie bitte, dass bei Cronjobs keine benutzerdefinierten Konfigurationsdateien für die Shell (z.B. .bashrc) geladen werden, falls Sie auf diesem Weg eine abweichende PHP-Version für die Shell gesetzt haben, wirkt sich dies nicht auf Cronjobs aus.
Falls Sie von einem bestimmten Programm keine Ausgaben per E-Mail wünschen, so können Sie am Ende der Cronjob-Zeile einfach &> /dev/null anhängen, z.B.:
33 */2 * * 1-5 curl "https://www.variomedia.de/index.php" &> /dev/null
Beachten Sie dabei, dass es unter Unix zwei unterschiedliche Datenströme für die Ausgabe gibt, die Standardausgabe stdout und die Standardfehlerausgabe stderr. Mittels > wird nur die Standardausgabe umgeleitet, die Standardfehlerausgabe wird mittels 2> umgeleitet, und beide Datenströme mittels &>. Dies lässt sich bei Cronjobs ausnutzen, um E-Mail-Benachrichtigungen nur im Fehlerfall zu erhalten. Allerdings nutzen manche Programme die Standardfehlerausgabe nicht nur für Fehlermeldungen, sondern z.B. wie im Falle von curl für eine Fortschrittsanzeige. Solche Ausgaben sind bei Cronjobs unerwünscht und sollten entweder über Kommandozeilenparameter des Programms deaktiviert werden, oder durch eine Umleitung beider Ausgabedatenströme (&> /dev/null) unterbunden werden.