Ist es möglich, mit PHP Crontab-Jobs zu erstellen, zu bearbeiten und zu löschen?
Ich weiß, wie man die aktuellen Crontab-Jobs des Apache-Benutzers auflistet:
$output = shell_exec('crontab -l');
echo $output;
Aber wie füge ich einen Cron-Job mit PHP hinzu? 'crontab -e' würde nur einen Texteditor öffnen und Sie müssen die Einträge manuell bearbeiten, bevor Sie die Datei speichern.
Und wie lösche ich einen Cron-Job mit PHP? Wieder müssen Sie dies manuell mit 'crontab -e' tun.
Mit einer Jobzeichenfolge wie dieser:
$job = '0 */2 * * * /usr/bin/php5 /home/user1/work.php';
Wie füge ich es mit PHP zur Crontab-Jobliste hinzu?
Antworten:
Verwendung des Befehls crontab
So,
Das Obige kann sowohl zum Erstellen als auch zum Bearbeiten / Anhängen verwendet werden, vorausgesetzt, der Benutzer verfügt über die entsprechende Berechtigung zum Schreiben von Dateien.
So löschen Sie Jobs:
Beachten Sie außerdem, dass Apache als bestimmter Benutzer ausgeführt wird und dies normalerweise nicht root ist. Dies bedeutet, dass die Cron-Jobs nur für den Apache-Benutzer geändert werden können, sofern dem Apache-Benutzer keine
crontab -u
Berechtigung erteilt wurde .quelle
shell_exec('crontab -l')
nur die letzte Zeile zurück. Ich verwendenexec('crontab -l', $output)
. Implodieren Sie dann das $ output-Array in eine Zeichenfolge (mit \ n als Klebstoff).system()
,passthru()
,shell_exec()
undexec()
versuchen , über das Bedienfeld , das mit dem Hosting, wie cPanel oder Plesk kommt.Wir haben kürzlich ein Mini-Projekt (PHP> = 5.3) vorbereitet, um die Cron-Dateien für private und individuelle Aufgaben zu verwalten. Dieses Tool verbindet und verwaltet die Cron-Dateien, sodass Sie sie beispielsweise pro Projekt verwenden können. Unit Tests verfügbar :-)
Beispiel aus der Kommandozeile:
Beispiel aus der API:
Verwalten einzelner Aufgaben über die API:
github: php-crontab-manager
quelle
Überprüfen Sie einen Cronjob
Fügen Sie einen Cronjob hinzu
Entfernen Sie eine Crontab
Beispiel
quelle
crontab -l
\ n'. $ Befehl. '" | crontab -', $ output); ist es richtig. Ich erhalte kein crontab für www-data "-": 0: Fehler in der Minute in der crontab-Datei, kann nicht installiert werden.Das sollte es tun
quelle
Ich habe die folgende Lösung ausprobiert
}}
Credits für: Crontab-Klasse zum Hinzufügen, Bearbeiten und Entfernen von Cron-Jobs
quelle
Sie können versuchen, die
EDITOR
Umgebungsvariable mit etwas zu überschreiben, dased
eine Folge von Bearbeitungsbefehlen über die Standardeingabe übernehmen kann.quelle
Hängt davon ab, wo Sie Ihre Crontab aufbewahren:
quelle
Sie können Ihre Datei im cron-Format in /etc/cron.d/ ablegen. Hinzufügen eines eindeutigen Präfixes zum Dateinamen Um skriptspezifische Cron-Jobs aufzulisten, arbeiten Sie einfach mit einer Liste von Dateien mit einem eindeutigen Präfix. Löschen Sie die Datei, wenn Sie den Job deaktivieren möchten.
quelle
Schön ...
Versuchen Sie dies, um einen bestimmten Cron-Job zu entfernen (getestet).
quelle
exit;
nachheader('Location: ...');
. Außerdem ist dieses Formular tatsächlich ziemlich gefährlich, da es Cron-Jobs hinzufügen kann, um den Server zu "zerstören".Am einfachsten ist es, mit dem Befehl shell_exec ein Bash-Skript auszuführen und die Werte als Parameter zu übergeben. Von dort aus können Sie Crontabs wie in jedem anderen nicht interaktiven Skript bearbeiten und mithilfe von sudo usw. sicherstellen, dass Sie über die richtigen Berechtigungen verfügen.
Weitere Informationen finden Sie unter Crontab ohne Crontab -e .
quelle
Anstelle von crontab können Sie auch die App Engine- Task-Warteschlange von Google verwenden . Es hat eine großzügige kostenlose Quote, ist schnell, skalierbar, modifizierbar.
quelle
Es ist einfach. Sie können sich dazu locken. Stellen Sie sicher, dass die Locke auf dem Server installiert ist:
zum Auslösen jeder Minute: * * * * * curl --request POST ' https://glassdoor.com/admin/sendBdayNotification '
Minute Stunde Tag Monat Woche
Angenommen, Sie möchten diese Benachrichtigung täglich um 14:15 Uhr senden. Sie können POST / GET basierend auf Ihrer API ändern:
15 14 * * * curl - POST anfordern 'url of ur API'
quelle