MediaWiki/Jobs
Es gibt bestimmte Aufgaben, die MediaWiki über einen längeren Zeitraum im Hintergrund ausführen muss.
- Beispiel
- Eine Vorlage wird geändert.
- 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 zu sehr verlangsamen Server könnte
- Dieser Vorgang kann nicht auf einmal durchgeführt werden
- Stattdessen wird der Prozess in „Jobs“ zerlegt, die in eine „Job Queue“ gestellt werden
- diese Jobs werden dann geordnet ausgeführt.
- Job-Warteschlange
- 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 etwa 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.
- runJobs.php
Sie können auch veranlassen, dass Jobs automatisierter ausgeführt werden, anstatt nur darauf zu warten, dass sie ausgeführt werden
- 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
- 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.
- Es gibt verschiedene Parameter, die runJobs.php annehmen kann
- 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.