Übersetzungen dieser Seite:
 

Zeitgesteuerte Aufgaben (Cronjobs)

Für den korrekten Betrieb von SoSci Survey wir die automatisierte regelmäßige Ausführung zweier Skripte empfohlen:

  1. Serverwartung (einmal täglich, nachts)
  2. 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-EinstellungenKonfiguration → Karteireiter ServerSkript 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-VerwaltungServer-WartungCronjob 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 (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-EinstellungenKonfiguration → Karteireiter ServerSkript 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.

cronjob.sh
#!/bin/bash
cd /var/www/html/admin/
/usr/bin/php /var/www/html/admin/cronjob.php password=PASSWORT
crontask.sh
#!/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.

crontask.bat
C:\php\php.exe C:\webserver\documents\sosci\admin\crontask.php password=PASSWORT
cronjob.bat
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
de/server/crontask.txt · Zuletzt geändert: von admin
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki