Konfiguration Scheduler
Der Scheduler muss vom Betriebssystem periodisch angetriggert werden (z.B. jede Minute), um eventuell anstehende asynchrone Aufgaben in raum]für[raum abarbeiten zu können.
Dafür muss das CLI-Tool concierge mit folgendem Kommando mit einem entsprechend privilegiertem Benutzer aufgerufen werden:
.
/concierge
.ps1 rfr:scheduler
Unter Windows-Systemen bietet sich dafür die Aufgabenplanung an, unter Linux-Systemen die Cronjobs. Beide Verfahren werden im folgenden beschrieben.
Scheduler unter Windows-Systemen: Aufgabenplanung
Wenn der angelegte Job nicht automatisch wiederholt wird
Vor dem Speichern des Aufgabenplanungsjobs darauf achten, dass der erste Start auf jeden Fall in der Zukunft liegt. Andernfalls kann der Job zwar manuell gestartet werden, wird aber nie automatisch wiederholt .
Scheduler Debugging Hinweis
Wenn die AppPool Identity ein Windows Benutzer ist, der nicht mit dem lokalen Server Admin Benutzer identisch ist, dann kann eine Windows Konsole mit diesem Befehl unter dem betreffenden Benutzer gestartet werden:
runas /user:domain\username cmd.exe
Scheduler unter Linux-Systemen: Cronjob
Es gibt zwei Möglichkeiten zur Implementierung des Cronjobs:
- Vom Benutzer (unter denen die PHP Skripte ausgeführt werden) verwaltete Cronjobs
- Vom Administrator verwaltete Cronjobs
Benutzer-Cronjob
Nachfolgend wird beschrieben, wie ein Benutzer-Cronjob erstellt wird. Im Gegensatz zu einem systemweiten Cronjob, kann prinzipiell jeder nicht-privilegierter Betriebssystem-Benutzer seine eigenen wiederkehrenden Aufgaben erstellenund verwalten. Die ausgeführten Befehle laufen immer in der Laufzeitumgebung des Betriebssystembenutzers, der den Crobjob erstellt.
Cron-Bearbeitung als Admin
crontab
-u <Name-des-PHP-Betriebssystembenutzers> -e
Cron-Bearbeitung als nicht privilegierter Betriebssystembenutzer
# sudo -u <Name-des-PHP-Betriebssystembenutzers> /bin/bash
$
crontab
-e
Inhalt des Cronjobs
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
* * * * *
RFR_BASE_DIR=/path/to/raumfuerraum/htdocs &&
test -e ${RFR_BASE_DIR}/concierge.ps1 &&
cd ${RFR_BASE_DIR} &&
${PHP_BASE_DIR}/concierge.ps1 rfr:scheduler
1
>/dev/
null
09
,
39
* * * *
RFR_BASE_DIR=/path/to/raumfuerraum &&
test -d ${RFR_BASE_DIR}/sessiondata &&
find ${RFR_BASE_DIR}/sessiondata -mindepth
1
-maxdepth
1
-type f -name
"sess_*"
-cmin +
120
-exec rm -f {} \;
1
>/dev/
null
Admin-Cronjob
Nachfolgend wird beschrieben, wie ein betriebssystemweiter Cronjob erstellt wird.
Cron-Bearbeitung als Admin
# crontab -e
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
* * * * *
<PHP-Betriebssystembenutzer>
RFR_BASE_DIR=/path/to/raumfuerraum/htdocs &&
test -e ${RFR_BASE_DIR}/concierge.ps1 &&
cd ${RFR_BASE_DIR} &&
${PHP_BASE_DIR}/concierge.ps1 rfr:scheduler
1
>/dev/
null
09
,
39
* * * *
<PHP-Betriebssystembenutzer>
RFR_BASE_DIR=/path/to/raumfuerraum &&
test -d ${RFR_BASE_DIR}/sessiondata &&
find ${RFR_BASE_DIR}/sessiondata -mindepth
1
-maxdepth
1
-type f -name
"sess_*"
-cmin +
120
-exec rm -f {} \;
1
>/dev/
null