Moin,
- Meine Aktionen sollen sich nicht wiederholen, was bei Cronjobs ja für gewöhnlich der Fall ist. Ist ein Cronjob trotzdem der richtige Weg?
du könntest einen Cronjob anlegen, der beispielsweise alle 10 Minuten läuft und nachsieht, ob etwas getan werden muss. Die Aufgaben, die dann zeitgesteuert ausgeführt werden sollen, könntest du in einer Datenbank speichern und den Eintrag nach der Ausführung löschen/auf "erledigt" setzen.
- Und dann war da noch das Usermanagement … Wenn Ich das richtig verstanden habe gibt es einen Zusammenhang zwischen Usern und Cronjobs. Ich habe mal versucht, mir mit einem PHP-Skript:
Normalerweise werden Cronjobs mit Root-Rechten ausgeführt, sofern nicht anders angegeben.
Das interpretiere ich so, dass der User PHP hier nur "seine" Cronjobs angezeigt bekommt und da gibt's einfach keine, den die auf dem Server bereits eingerichteten Cronjobs "gehören" nicht PHP.
Das ist eigentlich nicht der Fall. Es kann Cron-Jobs geben, die nicht in der Crontab stehen. Für Cronjobs gibt es bei Ubuntu beispielsweise das Verzeichnis /etc/cron.d in dem die entsprechenden Skripte dann abgelegt werden können. Außerdem gibt es noch "anacron", ein Paket welches die Ordner
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
jeweils zu den Zeiten abarbeitet (täglich, wöchentlich, ...)
- Das Ändern der crontab geschieht nicht einfach, indem PHP eine Datei crontab.txt irgendwo hinschreibt sondern mit dem Befehl "crontab".
Da deine Aufgaben nicht wiederholt werden sollen wäre für mich – wie gesagt – folgender Aufbau am sinnvollsten:
1. Redakteur legt Job an => PHP-Skript schreibt die erforderlichen Infos in eine Datenbank
2. Cron startet alle 10 Minuten (oder eben die granularste Einheit, die du brauchst) ein weiteres PHP-Skript (oder Perl, Bash, ...) welches prüft ob in der Datenbank ein Job steht, der ausgeführt werden soll und führt ihn aus. Danach wird der Datensatz entweder gelöscht oder mit einem Flag versehen, welches verhindert, dass er erneut ausgeführt wird (beispielsweise weil du nachvollziehen willst, welche Aufgaben abgearbeitet wurden).
Grüße Marco
Ich spreche Spaghetticode - fließend.