Diesen Artikel bewerten :
Dieser Artikel war hilfreich für Sie ?
Ja
Nicht
Vous avez noté 0 étoile(s)
Sommaire
Procédure
Der Zweck eines Cronjobs ist es, ein Skript, einen Befehl oder ein Programm automatisch zu bestimmten Zeitpunkten zu starten.
Mit"LWS Cronjob" können Sie planen, dass ein Skript auf Ihrer Website in verschiedenen Zeitabständen gestartet wird. Zum Beispiel einmal pro Woche, einmal pro Tag, am 8. eines jeden Monats, ...
Cron ist ein sehr nützliches Werkzeug für Systemadministratoren, um verschiedene Aufgaben zu automatisieren, wie z. B. die Sicherung von Daten, die Aktualisierung von Software, dasVersenden von E-Mails etc.
Auf diese Aufgaben wird ein Timeout von 240s angewendet, d. h. wenn Ihr Skript länger als 4 Minuten zur Ausführung benötigt, wird es nach 4 Minuten automatisch abgeschaltet.
Im ersten Schritt müssen Sie sich in Ihr LWS-Konto einloggen und auf das Shared Hosting zugreifen, für das Sie einen Cronjob erstellen möchten.
Sobald Sie sich in der Verwaltung Ihres Dienstes befinden, suchen Sie den Block"Datenbank & PHP" und klicken Sie auf"Cronjobs".
Das erste Element, das Sie für Ihren Cronjob konfigurieren müssen, ist die Periodizität.
An dieser Stelle bietet LWS in seinem Tool Voreinstellungen, mit denen Sie dies mit einem Klick konfigurieren können.
Verwenden Sie dazu einfach die erste Liste ganz oben im Formular und wählen Sie eine der vorgeschlagenen Einstellungen aus. Dies füllt automatisch die Felder aus, um die Periodizität mit der in der von Ihnen ausgewählten Liste übereinstimmenden Periodizität abzugleichen.
Wenn die Periodizität, die Sie einrichten möchten, nicht in der ersten Liste vorgeschlagen wird, keine Sorge, wir haben die Möglichkeit, jedes Element zu konfigurieren.
Für jedes Element (Minuten, Stunden, Tage, ...) können Sie entweder die Werte manuell eingeben oder das Listenfeld rechts neben jedem Feld nutzen.
Wenn ich also zum Beispiel möchte, dass meine Aufgabe jeden Tag um 12:27 Uhr startet, wählen Sie in der Liste, die dem Minutenfeld angehängt ist, einfach die Zahl 27 aus und wählen Sie in der Liste, die dem Stundenfeld angehängt ist, 12:00 pm (Mittag) aus.
Es gibt drei Möglichkeiten, sein Skript über das Cronjob-Tool aufzurufen:
Der Unterschied zwischen diesen drei Möglichkeiten besteht hauptsächlich darin, wie sie Ihr Skript ausführen.
Bei einem Wget- oder Curl-Aufruf läuft es über das HTTP-Protokoll, d. h. es unterliegt den Apache-Konfigurationen und -Einschränkungen, wie z. B. dem Timeout, das relativ kurz sein kann.
Was denPHP-Aufruf betrifft, so ist dieser frei von den Einschränkungen, die wir bei den beiden anderen Methoden besprochen haben. Betrachten Sie den PHP-Aufruf so, als ob Sie über eine SSH-Verbindung gehen würden.
Man könnte sich also fragen, welche Methode man wählen sollte, um seine Cronaufgabe einzurichten. Wir würden darauf antworten, dass es bei grundlegenden Skripten, die schnell ausgeführt werden, keine wirklichen Unterschiede gibt. Wenn Ihre CRON-Aufgabe jedoch ziemlich umfangreich ist, mit vielen durchgeführten Aktionen und daher etwas längerer Ausführungszeit, ist die Methode, die sich am besten eignet, derAufruf über PHP. Im Gegensatz zu Curl oder Wget ist die Wartezeit (Timeout) hier länger (4 min).
Wir werden für jeden der oben erwähnten Aufrufe sehen, wie man einen Cronjob einrichtet. Als Beispiel nehmen wir eine einfache Website, die ein Skript im Stammverzeichnis aufruft.
cURL-Aufruf
Bei einem curl-Aufruf, der das HTTP-Protokoll verwendet, werden wir einfach die URL zu unserer Datei wie folgt aufrufen
curl -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /dev/null
Es kann auch sein, dass wir Parameter an unser Skript senden müssen. Dazu fügen Sie die Parameter wie folgt ein:
curl -d "param1=value1¶m2=value2" -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /dev/null
So können wir im Code unseres Skripts diese Parameterwerte in POST abrufen.
Option | Rolle |
---|---|
-s |
Stiller Modus (kein Fortschrittsbalken). |
-H "Cache-Control: no-cache". |
Erzwingt serverseitiges Nicht-Caching. |
> /dev/null |
Leitet die Ausgabe so um, dass nichts gespeichert wird. |
Wget-Aufruf
Bei einem Wget-Aufruf, der ebenfalls das HTTP-Protokoll verwendet, werden wir wie beim cURL-Aufruf auch die URL unseres Skripts aufrufen. Dies wird dann so aussehen:
wget --no-cache --output-document=/dev/null --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php".
Für den Fall, dass wir dem Skript Parameter übergeben müssen, haben wir mit Wget keine andere Wahl, als die Parameter per GET zu übergeben. Der Befehl wird wie folgt geschrieben:
wget --no-cache --output-document=/dev/null --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php?param1=value1¶m2=value2".
Im Skript können wir diese beiden Parameter in GET abrufen.
Option | Rolle |
---|---|
--no-cache |
Vermeidet die Verwendung von Zwischenspeichern (nützlich bei einigen Proxys). |
--output-document=/dev/null |
Speichert nichts lokal. |
--header="Cache-Control: no-cache". |
Sendet einen HTTP-Header, um den serverseitigen Cache zu umgehen. |
PHP-Aufruf
Bei einer einfachen Website stellen wir uns vor, dass die Datei, in der sich mein Skript befindet, den Namen cron.php trägt.
Dann reicht es, wenn Sie im Cronjob-Tool den folgenden Befehl eingeben:
php /htdocs/cron.php
Hier wird die PHP-Version, die zur Ausführung Ihres Skripts verwendet wird, standardmäßig 8.0 sein.
Wenn Sie eine bestimmte PHP-Version verwenden möchten, müssen Sie den Aufruf nur leicht abändern. Wenn Sie beispielsweise die Version 7.2 verwenden möchten, um Ihr Skript auszuführen, lautet der aufgerufene Befehl wie folgt :
php72 /htdocs/cron.php.
Es kann auch vorkommen, dass wir ein Argument übergeben müssen, das später in unserem Skript verwendet wird.
Stellen wir uns zum Beispiel vor, unser Skript soll eine E-Mail nach einem zu definierenden Kriterium wie dem Geburtstag versenden. Es könnte also sein, dass wir dieses Kriterium im Aufruf übergeben wollen. Dies lässt sich über die Befehlszeile folgendermaßen bewerkstelligen :
php72 /htdocs/cron.php type=geburtstag
Sonderfall
Es gibt auch Sonderfälle, je nachdem, was Sie für Ihre Website verwenden.
Bei einer Website, die mit dem Cakephp-Framework erstellt wurde, ist die Konfiguration der CRON-Aufgabe beispielsweise etwas anders, da sie über einen SHELL-Befehl läuft, der vom Framework-System aufgerufen wird.
Angenommen, wir haben eine E-Commerce-Website, die mit dem Cakephp-Framework erstellt wurde, und wir wollen ein Skript einrichten, das dem besten Kunden eine E-Mail mit einem Gutscheincode schickt.
Wir werden einen Cakephp-Auftrag erstellen, den wir SendCP nennen, in dem sich das Skript befindet, das verwaltet, was wir tun wollen. Hier ist, wie wir den Cronauftrag konfigurieren werden:
php72 /htdocs/Console/cake.php SendCP
Es würde lange dauern, für jeden Fall ein Beispiel zu geben, aber mit dem, was hier gegeben wurde, haben Sie bereits eine gute Grundlage für die Verwendung des Cronjob-Tools.
Über die verschiedenen Beispiele wissen wir nun, wie wir unseren Befehl schreiben, um :
Wir werden nun sehen, wie wir eine Protokolldatei erstellen, die uns einen Überblick darüber verschafft, was während des von Cron aufgerufenen Skripts passiert ist.
Dazu gehen wir von dem folgenden Beispiel für unser Skript aus, das in CRON aufgerufen wird.
Beispiel für eine PHP-Echo-Funktion für die Log-Datei
<?php /* Vermeidet Cache-Sorgen */ header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); /* Schreibt das aktuelle Datum in die Datei Beispiel: 2023/01/19 12:24:01 */ /* PHP_EOL erlaubt es, eine Zeile in der Datei zu überspringen */ echo date('Y/m/d h:i:s').PHP_EOL; /* Schreibt den folgenden Satz in die Log-Datei */ echo 'Registrierung meiner Cron'.PHP_EOL.PHP_EOL; ?>.
Ausgabe der Logdatei nach dem Start des Skripts über Cron Job.
2023/01/19 02:57:01 Aufzeichnung meiner Cron 2023/01/19 03:57:01 Aufzeichnung meiner Cron 2023/01/19 04:57:01 Aufzeichnung meiner Cron 2023/01/19 05:57:01 Aufzeichnung meiner Cron 2023/01/19 06:57:01 Aufzeichnung meiner Cron 2023/01/19 07:57:01 Aufzeichnung meiner Cron 2023/01/19 08:57:01 Aufzeichnung meiner Cron 2023/01/19 08:57:01 Aufzeichnung meiner Cron.
Was Sie in Ihre Log-Datei schreiben, hängt also von Ihnen ab und davon, was Sie in Ihrem Skript verfolgen wollen. Das kann zum Beispiel eine Auflistung der Aktionen sein, mit, für jede, ihrem Ergebnis.
Beispiel für einen cURL-Aufruf mit Rückgabe in einer Logdatei.
Für einen cURL-Aufruf ist hier der Befehl, der in das Feld "Befehl" eingegeben werden muss:
curl -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /htdocs/logs/cron_curl.log 2>&1
In diesem Beispiel werden die Schreibrückmeldungen (PHP-Echo) in der Datei cron_curl.log im Ordner logs erfolgen. Wenn die Datei oder der Ordner nicht existiert, werden sie automatisch erstellt.
Option | Rolle |
---|---|
-s |
Stiller Modus (kein Fortschrittsbalken). |
-H "Cache-Control: no-cache". |
Erzwingt serverseitiges Nicht-Caching. |
> /htdocs/logs/cron_curl.log |
leitet die Standardausgabe (stdout) in die Datei cron_curl.log um. |
2>&1 | leitet auch die Fehler (stderr) in die gleiche Datei um. |
Beispiel Wget-Aufruf mit Rückgabe in einer Log-Datei.
Für einen Wget-Aufruf ist folgender Befehl zu implementieren:
wget -O - -q --no-cache --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /htdocs/logs/cron_wget.log 2>&1
In diesem Beispiel werden die Schreibrückmeldungen (PHP-Echo) in der Datei cron_wget.log im Ordner logs erfolgen. Wenn die Datei oder der Ordner nicht existiert, werden sie automatisch erstellt.
Option | Rolle |
---|---|
--no-cache |
Vermeidet die Verwendung von Zwischenspeichern (nützlich bei einigen Proxys). |
--header="Cache-Control: no-cache". |
Sendet einen HTTP-Header, um den serverseitigen Cache zu vermeiden. |
--post-data="..." | fügt einen benutzerdefinierten HTTP-Header hinzu. |
> /htdocs/logs/cron_wget.log |
leitet die Standardausgabe (stdout) auf cron_wget.log um. |
2>&1 | leitet auch die Fehler (stderr) in die gleiche Datei um. |
Beispiel PHP-Aufruf mit Rückgabe in einer Log-Datei.
Für einen PHO-Aufruf ist folgender Befehl zu implementieren :
php72 /htdocs/cron.php >> /htdocs/logs/cron_php.log.
In diesem Beispiel werden die Schreibrückmeldungen (PHP-Echo) in der Datei cron_php.log im Ordner logs erfolgen. Wenn die Datei oder der Ordner nicht existiert, werden sie automatisch erstellt.
Sobald Sie Ihre Cronjobs erstellt haben, können Sie sie direkt in der Auflistung finden, die unterhalb des Hinzufügeformulars erscheint.
Hier finden Sie eine Auflistung mit dem gespeicherten Befehl, der Periodizität und der Möglichkeit, einen Cronjob zu löschen oder zu pausieren.
Wenn Sie ein LWS-Starterpaket oder ein höheres Paket haben, können Sie den Cronjob für Ihr Paket über das Webterminal in Ihrer Paketverwaltung bearbeiten.
Dazu loggen Sie sich in Ihr Webhosting ein und greifen auf das Shared Hosting zu, für das Sie einen Cronjob bearbeiten möchten.
Klicken Sie auf"Terminal" , das sich in der Rubrik "Software" befindet.
Greifen Sie mit dem folgenden Befehl auf die cron-Datei zu:
crontab -e
Sobald Sie sich in der cron-Datei befinden, durchsuchen Sie die Datei nach der Aufgabe, die Sie bearbeiten möchten. Jede Zeile in der Datei steht für eine eigene Aufgabe. Bearbeiten Sie dann die Cronaufgabe und achten Sie dabei darauf, dass die Syntax korrekt bleibt. Speichern Sie die Aufgabe, indem Sie die Tastenkombination [STRG] +X und dann"Y" verwenden. Klicken Sie schließlich auf die Taste [Enter].
Sie haben nun die Möglichkeit zu überprüfen, ob der Cronjob korrekt geändert wurde, indem Sie den folgenden Befehl verwenden:
crontab -l
Sie haben Ihre Domain mit CloudFlare über dessen DNS verknüpft und möchten in Ihrem Kundenbereich unter der Rubrik Verbunden einen Cronjob einrichten, aber der Job wird nur einmal ausgeführt, ohne sich in dem von Ihnen gewünschten Zeitintervall zu wiederholen. Dieses Problem ist bekannt, CloudFlare blockiert die Ausführung von Cronjobs, die von unseren Diensten gesendet werden. Um dieses Problem zu beheben, finden Sie hier eine Lösung, um es zu umgehen.
Cronjobs, die über den Kundenbereich eingerichtet wurden, funktionieren nicht, wenn Sie die DNS von CloudFlare verwenden. Um dieses Problem zu beheben, sollten Sie folgendermaßen vorgehen:
Führen Sie in der Rubrik "DNS" das Hinzufügen eines CNAME-Eintrags wie im folgenden Beispiel aus:
Ersetzen Sie"cron" durch den Namen Ihrer Subdomain und"domain.ext" durch Ihren Domainnamen.
Achten Sie darauf, dass die Wolke grau und nicht orange ist. Dies signalisiert CloudFlare, dass Sie für diese Subdomain nicht über seine Dienste gehen möchten.
Anschließend können Sie auf die Schaltfläche"Add Record" klicken.
Sie wissen nun, wie Sie : - Den Nutzen und die Funktionsweise eines Cronjobs verstehen 🤖.
Wir hoffen, dass Ihnen dieser Artikel alle Schlüssel zur Beherrschung von Cronjobs und zur effektiven Automatisierung Ihrer Systemaufgaben vermittelt hat.
Wenn Sie Fragen, Feedback oder Tipps haben, die Sie mit uns teilen möchten, hinterlassen Sie sie bitte als Kommentar. Vielen Dank fürs Lesen und bis bald mit neuen praktischen Tipps! 🙏💬
Diesen Artikel bewerten :
Dieser Artikel war hilfreich für Sie ?
Ja
Nicht
0mn von Lesen
Multi-Domains - Mehrere Domains auf ein Webhosting setzen
1mn von Lesen
Ist es möglich, den Spamschutz RSpamD auf Shared Hosting zu entfernen?
0mn von Lesen
Wie kann ich E-Mails anzeigen lassen, die über die PHP-Mail-Funktion gesendet und von SPAMASSASSIN blockiert wurden?