MediaWiki/Jobs

Aus Foxwiki

Die Jobwarteschlange

Es gibt bestimmte Aufgaben, die MediaWiki über einen längeren Zeitraum im Hintergrund ausführen muss. Der häufigste Fall tritt auf, wenn eine Vorlage geändert wird. Angenommen, jemand fügt einer Vorlage ein Kategorie-Tag hinzu – das bedeutet, dass alle Seiten, die diese Vorlage enthalten, dieser Kategorie hinzugefügt werden müssen. Dieser Vorgang kann nicht auf einmal durchgeführt werden, da dies den Server erheblich verlangsamen oder sogar vorübergehend zum Absturz bringen würde. Stattdessen wird der Prozess in „Jobs“ zerlegt, die in eine „Job Queue“ gestellt werden – und diese Jobs werden dann geordnet ausgeführt.

Hinter den Kulissen ist die Job-Warteschlange wirklich nur eine Datenbanktabelle namens "Job", die eine Zeile für jeden Job enthält. Diese Jobs werden in sequenzieller Reihenfolge ausgeführt, und sobald ein Job ausgeführt wird, wird seine Zeile gelöscht.

Jobs werden jedes Mal ausgeführt, wenn das Wiki einen Seitentreffer erhält. Standardmäßig wird bei jedem Treffer ein Job ausgeführt, aber diese Zahl kann geändert werden, um die Ausführung von Jobs langsamer oder schneller zu machen, indem der Wert von $wgJobRunRate geändert wird. Um beispielsweise die Ausführung von Jobs zehnmal schneller zu machen, würden Sie Folgendes zu LocalSettings.php hinzufügen:


$wgJobRunRate = 10; 


Um es zehnmal langsamer zu machen, würden Sie den Wert auf 0,1 setzen. (Sie können nicht wirklich einen Bruchteil eines Jobs ausführen – stattdessen legt ein Bruchteil die Wahrscheinlichkeit fest, dass ein Job zu einem bestimmten Zeitpunkt ausgeführt wird.)

Sie können auch veranlassen, dass Jobs automatisierter ausgeführt werden, anstatt nur darauf zu warten, dass sie ausgeführt werden (oder im Browser wiederholt auf „Neu laden“, um die Ausführung zu beschleunigen). Dies geschieht durch Aufrufen des Skripts runJobs.php im MediaWiki- /maintenance . Sie können sogar einen Cron-Job erstellen, um runJobs.php regelmäßig auszuführen – sagen wir einmal am Tag.

Es gibt verschiedene Parameter, die runJobs.php annehmen kann, wie z. B. das Festlegen der maximalen Anzahl auszuführender Jobs oder, was vielleicht noch wichtiger ist, die Art des auszuführenden Jobs. Um letzteres zu ermöglichen, hat jeder Auftragstyp einen eigenen Kennungsnamen, der in der Datenbank zu finden ist. Alle Parameter für runJobs.php können Sie hier nachlesen:


https://www.mediawiki.org/wiki/Manual:RunJobs.php 


Zusätzlich zum MediaWiki-Kern können Erweiterungen auch ihre eigenen Jobs erstellen. Einige Erweiterungen, die dies tun, sind Data Transfer, DeleteBatch, Nuke und Replace Text.