Das manuelle Arbeiten mit Cron-Jobs ist am häufigsten bei geringen Mengen an Cron-Jobs. Aber was ist, wenn Sie mit vielen Cron-Jobs arbeiten? PHP ist die Antwort! Warum PHP? Ganz einfach, weil es die Aufgaben automatisieren kann, die zum Hinzufügen, Entfernen und Auflisten von Cron-Jobs erforderlich sind.
Kein Leser? Sehen Sie sich dieses zugehörige Video-Tutorial an! Sie sehen das Video nicht? Stellen Sie sicher, dass Ihr Werbeblocker deaktiviert ist.In diesem Tutorial erfahren Sie, wie PHP Zeit sparen kann, indem es das Hinzufügen, Entfernen und Auflisten von Cron-Jobs für ein Linux-System automatisiert.
Bereit? Spring direkt hinein!
Voraussetzungen
Dieses Tutorial wird eine praktische Demonstration sein. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie Folgendes haben:
- Crontab – Crontab wird normalerweise standardmäßig auf Linux-Betriebssystemen installiert.
- Die meisten Linux-Distributionen verwenden dasselbe Cron-System. Die Beispiele werden hier auf einem macOS mit einem BSD-basierten zugrunde liegenden System gezeigt.
Crontab-Datei erstellen
Bevor Sie Cron-Jobs verwalten können, benötigen Sie zunächst eine Datei zum Speichern dieser Cron-Jobs. Alle Cron-Jobs werden in einer systemweiten Crontab-Datei gespeichert.
Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus, um das Verzeichnis in /usr/local
zu ändern und erstellen Sie Unterverzeichnisse (jobs
und scripts
). Sie können diese Verzeichnisse nach Belieben anders benennen. Diese Verzeichnisse speichern später Ihre Cron-Job-Dateien und Skripte.
cd /usr/local && sudo mkdir jobs scripts
Führen Sie nun den folgenden Befehl aus, um die Crontab-Datei (crontab -e
). Die Crontab-Datei wird automatisch in Ihrem ~/tmp erstellt Verzeichnis, wenn Sie zum ersten Mal crontab
aufrufen Befehl.
# Sets default text editor to nano
export EDITOR='nano'
# Initializes the crontab file and opens it in nano
crontab -e
Einzelne Cron-Jobs hinzufügen
Nachdem Sie die Crontab-Datei erstellt haben, können Sie mit der Verwaltung Ihrer Cron-Jobs beginnen. Aber Sie müssen sich zuerst darauf konzentrieren, sie über PHP hinzuzufügen. Wie? Sie erstellen ein PHP-Skript und führen es aus, um Cron-Jobs hinzuzufügen.
Cron-Jobs werden mit fünf Parametern geplant, wie unten gezeigt. Jeder Parameter hat einen Standardwert von *, was anzeigt, dass für diesen Parameter kein Wert angegeben wurde, egal ob für stündliche, tägliche, wöchentliche oder monatliche Cron-Jobs.
Wenn Sie eine Auffrischung der Cron-Job-Syntax mit Beispielen benötigen, werfen Sie einen Blick auf die Website von crontab.
1. Erstellen Sie eine Datei in Ihrem Texteditor, kopieren/fügen Sie den folgenden Code ein und speichern Sie ihn unter /usr/local/jobs Verzeichnis. In diesem Beispiel heißt die Datei newjob.py , aber Sie können es anders benennen. Der folgende Code gibt einen Text aus (Executed!
) bei der Ausführung.
print("Executed!")
2. Erstellen Sie als Nächstes eine PHP-Skriptdatei, kopieren Sie den folgenden Code, fügen Sie ihn in diese PHP-Datei ein und speichern Sie ihn unter /usr/local/scripts . Für dieses Tutorial heißt das Skript add.php .
Denken Sie während des gesamten Tutorials daran, die Skriptdateien im Verzeichnis /usr/local/scripts und die Cron-Job-Dateien im Verzeichnis /usr/local/jobs zu speichern.
Der folgende Code fügt newjob.py hinzu Datei als Cron-Job in der Crontab-Datei.
Die
shell_exec
Der Vorgang speichert die Liste der Cron-Jobs in einer Zeichenfolge im Speicher, bevor ein neuer hinzugefügt wird, sodass Sie keinen der vorhandenen Cron-Jobs verlieren.
Tut
shell_exec
nicht arbeiten? Möglicherweise haben Sie diese Funktion in Ihrer php.ini-Datei deaktiviert. Suchen Sie nachdisable_functions
Konfiguration in Ihrer php.ini und entfernen Sieshell_exec
von der Liste. Beachten Sie, dass dies missbraucht werden kann, seien Sie also vorsichtig mit dieser Funktion!
3. Führen Sie den folgenden Befehl aus, um add.php
auszuführen script aus /usr/local/scripts Verzeichnis. php add.php
php add.php
Stellen Sie sicher, dass Sie sich im Verzeichnis /usr/local/scripts befinden, wenn Sie Skripte während des gesamten Tutorials ausführen.
4. Führen Sie schließlich den folgenden crontab -l
aus Befehl, um zu prüfen, ob der neue Cron-Job existiert.
crontab -l
Cron-Jobs auflisten
Vielleicht möchten Sie die von Ihnen hinzugefügten Cron-Jobs verfolgen, damit Sie sie entweder aktualisieren oder entfernen können. Wenn ja, besteht Ihr erster Schritt darin, die vorhandenen Cronjobs aufzulisten. Das Auflisten von Cron-Jobs ist praktisch, um den Überblick über Ihre Cron-Jobs zu behalten.
Erstellen Sie ein neues PHP-Skript, geben Sie ihm einen eindeutigen Namen und fügen Sie den folgenden Code in die Skriptdatei ein. In diesem Beispiel heißt das Skript list.php .
Der folgende Code ist shell_exec
Vorgang sammelt und zeigt (echo()
) alle Cronjobs (crontab -l
) aus der crontab-Datei.
Führen Sie nun den folgenden Befehl aus, um die list.php auszuführen Skript.
php list.php
Ein Array von Cronjobs auflisten
Vielleicht möchten Sie die Liste der Cron-Jobs in einem Array anstelle einer einfachen Liste drucken. Dann benötigen Sie den ) and [var_dump()](
Funktionen. Mit diesen Funktionen können Sie Cron-Jobs in der Crontab-Datei als Element in einem Array speichern.
Ersetzen Sie den Inhalt der list.php Datei mit dem folgenden Code. Das Ausführen des folgenden Codes listet ein Array von Cron-Jobs auf und gibt auch die Zeichenfolgenlänge des Cron-Jobs aus.
Führen Sie nun den folgenden Befehl aus, um list.php
auszuführen Skript.
php list.php
Wie Sie unten sehen, gibt der Code die Liste der Cron-Jobs in einem Array aus und zeigt gleichzeitig die Länge der Zeichenfolge an.
Cronjobs entfernen
Nachdem Sie nun die Liste der vorhandenen Cron-Jobs haben, können Sie entscheiden, was Sie mit jedem Cron-Job machen möchten. Vielleicht haben Sie Cron-Jobs, die Sie entfernen möchten. Wenn dies der Fall ist, geben Sie den zu entfernenden Cron-Job in einer Zeichenfolgenvariablen an.
1. Erstellen Sie ein neues PHP-Skript namens remove.php Fügen Sie für dieses Beispiel den folgenden Code zum Skript hinzu. Sie können die Skriptdatei nach Belieben anders benennen.
Der folgende Code entfernt einen bestimmten Cron-Job aus der Crontab-Datei.
2. Führen Sie den folgenden Befehl aus, um remove.php
auszuführen Skript.
php remove.php
3. Führen Sie abschließend crontab -l
aus Befehl, um zu sehen, ob Sie newjob.php
entfernt haben Cron-Job. crontab -l
crontab -l
Hinzufügen und Entfernen mehrerer Cron-Jobs
Durch das Hinzufügen eines einzelnen Cron-Jobs können Sie auch mehrere Cron-Jobs hinzufügen, vielleicht wenn Sie tägliche Aufgaben automatisieren möchten. Wie? Indem Sie Ihrem Skript eine for-Schleife hinzufügen.
Das Hinzufügen und Entfernen mehrerer Cron-Jobs hat einen ähnlichen Ansatz, aber das Skript zum Entfernen mehrerer Cron-Jobs verwendet mehr Variablen, wie unten gezeigt.
1. Ersetzen Sie den Inhalt Ihrer add.php Datei mit dem folgenden Code. Durch Ausführen des folgenden Codes werden der Crontab-Datei mehrere Cron-Jobs hinzugefügt, indem durch ein Array gepaddelt wird.
2. Führen Sie als Nächstes den folgenden Befehl erneut aus, um add.php
auszuführen Skript. php add.php
php add.php
3. Führen Sie den folgenden crontab -l
aus Befehl, um zu überprüfen, ob die Cron-Jobs, die Sie in der Crontab-Datei hinzugefügt haben, vorhanden sind. crontab -l
crontab -l
4. Ersetzen Sie nun den Inhalt Ihrer remove.php Datei mit dem folgenden Code, der mehrere von Ihnen definierte Cron-Jobs entfernt. Ähnlich wie beim Hinzufügen mehrerer Cron-Jobs gilt der gleiche Ansatz beim Entfernen mehrerer Cron-Jobs, jedoch mit zusätzlichen Variablen.
5. Führen Sie den folgenden Befehl aus, um remove.php
auszuführen Skript.
php remove.php
6. Führen Sie abschließend crontab -l
aus Befehl, um zu überprüfen, ob Sie die Cron-Jobs entfernt haben.
crontab -l
Wenn Sie die Cron-Jobs erfolgreich entfernt haben, erhalten Sie keine Ausgabe wie die folgende.
Erstellen von Funktionen zum Verwalten von Cronjobs
Bisher haben Sie gesehen, wie Sie Cron-Jobs in separaten Skripten hinzufügen, entfernen und auflisten können. Aber um Cron-Jobs effektiv zu verwalten, können Sie Funktionen in einem einzigen Skript erstellen, anstatt drei separate Skripts auszuführen.
Erstellen Sie eine neue Skriptdatei und fügen Sie den folgenden Code ein. Geben Sie dem Skript einen beliebigen Namen, aber in diesem Beispiel heißt das Skript multi.php .
Der folgende Code fügt Cron-Jobs hinzu, entfernt sie und listet sie mit drei separaten Funktionen auf, die Sie am Ende des Skripts aufrufen können.
Führen Sie nun den folgenden Befehl aus, um multi.php
auszuführen Skript.
php multi.php
Unten sehen Sie die Ausgabe von list_jobs()
Funktion, die in der multi.php aufgerufen wird Skript.
Speicherüberlastung verhindern
Sie haben die Fähigkeiten von PHP bei der Verwaltung von Cron-Jobs gesehen, aber zu viele Cron-Jobs verbrauchen Speicher. Wie vermeide ich eine Speicherüberlastung? Legen Sie ein Zähllimit fest, wie viele Cron-Jobs Sie der Crontab-Datei hinzufügen können.
1. Fügen Sie der multi.php die folgende Funktion hinzu Skript. Die folgende Funktion zählt alle Cron-Jobs, indem sie alle Zeilen in der Crontab-Datei zählt und eine Meldung ausgibt, um Sie über die aktuelle Anzahl der Cron-Jobs zu informieren.
function count_jobs(){
$jobs = shell_exec("crontab -l");
# Counts all cron jobs from the crontab file and prints the result
echo("You currently have ".substr_count( $jobs, "\n")." cron jobs");
}
2. Rufen Sie als nächstes die count_jobs()
an -Funktion am Ende des Skripts, wie Sie es im Abschnitt „Erstellen von Funktionen zum Verwalten von Cron-Jobs“ getan haben.
3. Führen Sie den folgenden Befehl aus, um multi.php
auszuführen Skript.
php multi.php
Wie Sie unten sehen können, gibt es eine Meldung, die Ihnen die aktuelle Anzahl der Cron-Jobs mitteilt.
Aber vielleicht möchten Sie das Skript automatisch beenden, wenn zu viele Cron-Jobs gleichzeitig laufen. Wenn ja, fügen Sie einen if
hinzu Bedingung wird es tun.
4. Ersetzen Sie count_jobs()
Funktion in der multi.php Datei mit der folgenden.
Die folgende Funktion liest die Anzahl der Zeilen in der crontab-Datei und entscheidet anhand dieser Zahl, ob das Skript beendet wird oder nicht.
function count_jobs(){
$jobs = shell_exec("crontab -l");
# Counts all cron jobs from the crontab file and prints the result
echo("You currently have ".substr_count( $jobs, "\n")." cron jobs\n");
# Checks whether the cron jobs count is over 50 or not
if(substr_count( $jobs, "\n") > 50){
# Prints a message and terminates the script
exit("Too many cron jobs, cannot add any more!");
}
}
5. Führen Sie abschließend multi.php
aus Skript, wie Sie es in Schritt drei getan haben. php multi.php
php multi.php
In der Ausgabe unten sehen Sie die Meldung, die Ihnen die aktuelle Anzahl der Cron-Jobs mitteilt (63 ). Da die Anzahl der Cron-Jobs mehr als 50 beträgt, wird das Skript automatisch beendet und es werden keine Cron-Jobs hinzugefügt.
Schlussfolgerung
In diesem Tutorial haben Sie festgestellt, dass PHP eine Möglichkeit bietet, Cron-Jobs mit shell_exec()
zu automatisieren Funktion. Sie haben gelernt, Cron-Jobs in einem einzigen PHP-Skript hinzuzufügen, zu entfernen und aufzulisten und dabei sicherzustellen, dass Sie Ihren Arbeitsspeicher nicht überlasten.
Werden Sie das nächste Mal, wenn Sie Cron-Jobs für Ihre Projekte verwalten müssen, PHP in Erwägung ziehen?