Job Ausführung
Es ist möglich, in OPUS4 bestimmte lang laufende Jobs (z.B. die Indexierung großer Dokumente) asynchron zu verarbeiten. Auf diese Weise können Timeouts (weiße Seite) vermieden werden. Die asynchrone Verarbeitung nutzt den Mechanismus des Unix cron-Daemon, der die zeitbasierte Ausführung von Prozessen und wiederkehrende Aufgaben in sogenannten Cron-Jobs automatisiert. Die Aktivierung der asynchronen Jobverarbeitung wird im folgenden beschrieben.
Beim Aktivieren der asynchronen Jobverarbeitung ist zu beachten, dass die Änderungen im System immer mit einer zeitlichen Verzögerung eintreten. So werden beispielsweise Änderungen an Dokumenten erst über die Suche auffindbar, wenn die Solr-Indexierung erfolgt ist. In der Zwischenzeit befindet sich der Solr-Index in einem inkonsistenten Zustand.
Achtung: Die Aktivierung erfolgt global für alle asynchronen Jobs (derzeit Solr-Indexierung, Mail- Versand und Löschen temporärer Dokumente).
Erstellen von Cron-Jobs auf dem Server
Im Verzeichnis $BASEDIR/scripts/cron
existiert jeweils ein PHP-Skript für jeden Job. Diese
Skripte werden dem Shell-Skript cron-php-runner.sh
als Argument übergeben. Als weiteres
Argument muss das Verzeichnis für die lock-Datei angegeben werden, mit der die mehrfache,
parallele Ausführung desselben Skripts verhindert wird. Als optionales Argument kann ein Log-
Verzeichnis angegeben werden. Wird es nicht angegeben, dann erfolgt die Ausgabe des Skripts
direkt auf der Kommandozeile. Für die Ausführung als Cron-Job wird die Angabe des Log-
Verzeichnisses empfohlen. Eine Information über fehlgeschlagene Jobs kann auch in der
Administration unter “System Informationen” eingesehen werden.
Wird für einen der implementierten Verarbeitungsmechanismen kein Cron-Job angelegt, führt das zu einem fehlerhaften Verhalten des Systems, weil die entsprechenden Jobs dann nicht verarbeitet werden.
Zur Zeit ist die asynchrone Verarbeitung der Solr-Indexierung, des Mail-Versands und für das Löschen temporärer Dokumente implementiert. Sie können folgendermaßen aufgerufen werden:
Solr-Indexierung
Ein Cron-Job (hier als Beispiel für die Ausführung alle 5 Minuten) wird wie folgt angelegt:
Mailversand
Ein Cron-Job (hier als Beispiel für die Ausführung alle 5 Minuten) wird wie folgt angelegt:
Löschen temporärer Dokumente
Beim Erstellen von Dokumenten werden in der Datenbank temporäre Dokumente angelegt und normalerweise wieder gelöscht, sobald das Dokument endgültig angelegt oder der Vorgang explizit abgebrochen wurde. Geschieht das nicht (bspw. durch Schließen des Browsers), dann verbleiben die temporären Dokumente in der Datenbank.
Bei der Definition des cronjobs ist zu beachten, dass das Skript nach temporären Dokumenten sucht, die mindestens einen Tag alt sind. Das heißt, dass der cronjob sinnvoller Weise höchstens einmal täglich ausgeführt werden sollte.
Aktivieren der asynchronen Jobverarbeitung
Jobs werden im System nur generiert, wenn in der config.ini
der Wert für runjobs.asynchronous
auf 1
gesetzt wird (Standard ist 0
):
Bei Bedarf: Einrichten des Monitoring (z.B. Nagios)
Die URL $BASEDIR/admin/info/worker-monitor
gibt den Wert 1
zurück, wenn es Jobs gibt, die
nicht verarbeitet werden konnten. Ansonsten wird der Wert 0
zurückgeliefert. Es ist so möglich, die
erfolgreiche Jobverarbeitung mit Monitoring-Systemen zu überwachen. Dafür muss im Admin-
Bereich unter Zugriffskontrolle der IP-Bereich
für das Monitoring freigeschaltet werden,
ansonsten ist die URL von außen nicht erreichbar.