====== 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