====== Zeitgesteuerte Aufgaben (Cronjobs) ======
Für den korrekten Betrieb von SoSci Survey wir die automatisierte regelmäßige Ausführung zweier Skripte empfohlen:
- Serverwartung (einmal täglich, nachts)
- Zeitgesteuerte Funktionen (jede Minute)
===== Serverwartung =====
Einige Aufgaben müssen auf dem Befragungsserver regelmäßig erledigt werden: Die Archivierung alter Projekte, das Löschen temporärer Dateien, das Löschen obsoleter Benutzerkonten (Karteileichen) und die Optimierung der Datenbank-Tabellen.
Diese Aufgaben erledigt ein Wartungsskript ''/admin/cronjob.php''. Dieses Skript ist mit einem Passwort geschützt, das Sie in den **Server-Einstellungen** unter **Konfiguration** festlegen können. Das Passwort wird dem Skript als Parameter ''password'' übergeben.
Den vollständigen Pfad des PHP-Skripts finden Sie unter **Server-Einstellungen** -> **Konfiguration** -> Karteireiter //Server// -> //Skript für Server-Wartung//.
==== Manuelle Wartung ====
Die Server-Wartung kann auch manuell durchgeführt werden, zum Beispiel auf wenig genutzten Servern.
* Melden Sie als Administrator in SoSci Survey an und wählen dort **Server-Verwaltung** -> **Server-Wartung** -> **Cronjob jetzt durchführen**
* Alternativ rufen Sie die URL direkt im Browser auf: **%%http://www.domain.tld/sosci/admin/cronjob.php?password=SECRET%%**
==== Rückgabewerte ====
Das PHP-Script gibt folgende Meldungen zurück:
* ''ok'' -- Cronjob erledigt, alles in Ordnung
* ''warning'' -- Cronjob erledigt, es gab Warnungen
* ''error'' -- Cronjob erledigt, es gab Fehler
* ''denied'' -- das Passwort stimmt nicht (sofern angegeben)
* ''delayed'' -- der Cronjob wurde innerhalb der letzten 6 Stunden ausgeführt und muss noch nicht wieder ausgeführt werden
Der Server-Administrator erhält eine E-Mail mit weiteren Details zum Cronjob, die auch hochgeladene Dateien, neue Benutzerkonten und Projekte listet. Einige Informationen aus dem Cronjob (z.B. gelöschte Nutzer und Projekte) werden zudem im Cronjob-Logfile vermerkt.
===== Zeitgesteuerte Funktionen =====
SoSci Survey erlaubt einige zeitgesteuerte Funktionen, z.B. die Übertragung von Interviews in die Datenbank bei niedriger Serverlast ([[caching|Schreibcache für Interviews]]), den zeitgesteuerten Versand von Serienmails oder (noch in Entwickung) eine regelmäßige Benachrichtigungen über die Anzahl der Befragungsteilnehmer.
Für die korrekte Ausführung der zeitgesteuerten Funktionen muss das Skript ''admin/crontask.php'' regelmäßig ausgeführt werden. Empfohlen wird ein Aufruf alle 1-5 Minuten -- rufen Sie das Skript seltener auf, kann der Zeitpunkt wann eine Aufgabe abgearbeitet wird, stärker vom geplanten Zeitpunkt abweichen.
Den absoluten Pfad zum PHP-Skript, welches Sie für die Einrichtung der zeitgesteuerten Ausführung benötigen, finden Sie unter **Server-Einstellungen** -> **Konfiguration** -> Karteireiter //Server// -> //Skript für Crontask//.
===== Einrichtung unter Linux =====
Erstellen Sie zwei Bash-Scripte, zum Beispiel unter ''var/www/script/'' mit folgendem Inhalt. Ersetzen Sie ''/var/www/html/'' durch das Installationsverzeichnis von Sosci Survey und ''PASSWORT'' durch das in den **Server-Einstellungen** festgelegte //Passwort für Cronjob//.
#!/bin/bash
cd /var/www/html/admin/
/usr/bin/php /var/www/html/admin/cronjob.php password=PASSWORT
#!/bin/bash
cd /var/www/html/admin/
/usr/bin/php /var/www/html/admin/crontask.php password=PASSWORT
* Wir empfehlen, dass Sie die Skripte dem Benutzer ''www-data'' zuordnen. Außerdem müssen die Scripte das "excetuable flag" bekommen.
sudo chown www-data cronjob.sh crontask.sh
sudo chmod u+x cronjob.sh crontask.sh
* Der Pfad von ''php'' kann variieren, z.B. ''/usr/lib/cgi-bin/php''. Sie können den korrekten Pfad zum Beispiel über ''which php'' ermitteln.
* Testen Sie den Aufruf des Scripts in der Konsole.
sudo -u www-data /s2data/s2survey/script/crontask.sh
* Anschließend können Sie einen Cronjob anlegen mittels ''sudo crontab -u www-data -e''
# m h dom mon dow command
*/1 * * * * /var/www/script/crontask.sh >/dev/null 2>&1
30 4 * * * /var/www/script/cronjob.sh >/dev/null 2>&1
===== Einrichtung unter Windows =====
Unter Windows ist für die regelmäßige Ausführung von Skripten der Aufgabenplaner zuständig (Geplante Tasks, Aufgabenplanung).
Zunächst ist eine ausführbare Datei erforderlich, welche den PHP-Interpreter aufruft und das PHP-Skript als Parameter übergibt -- etwa eine einfache Batch-Datei (''*.bat''). Die Pfade im folgenden Beispiel müssen an die jeweilige Installation angepasst werden.
C:\php\php.exe C:\webserver\documents\sosci\admin\crontask.php password=PASSWORT
C:\php\php.exe C:\webserver\documents\sosci\admin\cronjob.php password=PASSWORT
Führen Sie die Datei testweise aus, um die Pfade zu überprüfen. Die regelmäßige Ausführung dieser Datei wird anschließend im Aufgabenplaner als Aufgabe erstellt.
* Aufgabenplanung öffnen
* Ausführen-Dialog
* Windows-Taste + R drücken
* Befehl eingeben: taskschd.msc eintippen und bestätigen
* Alterantiv: Systemsteuerung → Verwaltung → Aufgabenplanung
In der Aufgabenplanung
* Im rechten Bereich: Auf „Aktion" klicken (oberes Menü)
* Option auswählen: „Einfache Aufgabe erstellen..."
* Assistent folgen: Der Assistent für die Erstellung einer einfachen Aufgabe öffnet sich
* Aufgabe 1: crontask.bat jede Minute ausführen
* Name vergeben (z. B. "SoSci Survey zeitgesteuerte Funktionen")
* Trigger: "Täglich" auswählen → Einstellung anpassen auf "Jede Minute" (oder "Einmalig" mit Wiederholung alle 1 Minute)
* Aktion: "Programm starten"
* Programm/Skript: Pfad zu ''crontask.bat'' angeben bzw. auswählen
* Fertigstellen
* Aufgabe 2: cronjob.bat einmal täglich ausführen
* Name vergeben (z. B. „SoSci Survey nächtliche Wartung")
* Trigger: „Täglich" auswählen → Zeit festlegen (z. B. 00:00 Uhr)
* Aktion: „Programm starten"
* Programm/Skript: Pfad zu ''cronjob.bat'' angeben bzw. auswählen
* Fertig stellen