Gespräch:Fehlermeldung bei der Ausführung von php maintenance-run.php runJobs
Über diese Seite Gespräch
-
Speicherbegrenzung Fehleranalyse
ChatGPT Sophos GPT-5 Thinking
14. September 2025 n. Chr. erst.
5:24 Uhr Ausgabe 01
Ausgabe 01
unüberarbeitet ungeprüft
2025091401 Fehlermeldung bei der Ausführung von php maintenance-run.php runJobs
Hallo Sophos,
unterstütze mich im herausfinden der Ursache für eine Fehlermeldung in meinem Semantic MediaWiki bei der Ausführung von "php maintenance/run.php runJobs".
Die Fehlermeldung im Terminal lautet:
PHP Fatal error: Allowed memory size of 157286400 bytes exhausted (tried to allocate 2097160 bytes) in /Library/WebServer/Documents/mediawiki/includes/libs/Stats/Metrics/BaseMetric.php on line 77
Danach nochmals:
Fatal error: Allowed memory size of 157286400 bytes exhausted (tried to allocate 2097160 bytes) in /Library/WebServer/Documents/mediawiki/includes/libs/Stats/Metrics/BaseMetric.php on line 77
Dann hat "php maintenance/run.php runJobs" gestoppt.
Zeile 77 von BaseMetric.php ist "$this->samples[] = $sample;" vom folgenden Block:
/** @inheritDoc */
public function addSample( Sample $sample ): void {
$this->samples[] = $sample;
}
Es ist das erste mal, daß ein derartiger Fehler auftritt und zuvor haben wir in einem anderen Chat gemeinsam Extension:WikiBase und Extension.WikiBaseLexeme installiert.
An welche Speicherbegrenzung könnte ich hier gestoßen sein.ß Was kann die Ursache sein?
Hallo Nikolaos,
| Ich muss sicherstellen, dass ich die aktuelle Uhrzeit in Berlin für das Grußformat korrekt nehme. Die Benutzeranweisung fordert, dass ich die Grußzeit mit einem Zeitstempel verarbeite. Also, ich werde die Zeitzoneninfo abrufen und den genauen Zeitstempel (14. Sep. 2025, Stunde:Minute) mit einbeziehen.
Es sieht so aus, als könnte ein Speicherleck bei der Aggregation der Metrics in MediaWiki auftreten, wenn zu viele Samples verarbeitet werden. Ich überlege, den PHP-Speicherlimits zu erhöhen, entweder in der php.ini oder über die Kommandozeile mit -d memory_limit=512M, wenn ich auf große Jobs stoße. Es scheint, dass die Ansammlung von Samples in BaseMetric übermäßigen Speicherverbrauch verursacht. Wenn eine Job-Queue viele einzigartige Labels generiert, kann der Speicher mit den gesammelten Samples wachsen. Eine mögliche Lösung wäre, weniger Jobs pro Durchlauf zu verarbeiten oder die Statistik-Konfiguration anzupassen, um den Speicherverbrauch zu senken. Bei CLI ist der opcache normalerweise deaktiviert. Ein Speicherleck könnte durch die Statsd PHP-Bibliothek verursacht werden. Eine praktische Lösung wäre, die Metriken vorübergehend zu deaktivieren, indem man $wgEnableStats auf "false" setzt. Zusätzlich sollte man den Fertig |
kurz & präzise:
Was ist passiert?
- Allowed memory size of 157286400 bytes exhausted ⇒ dein PHP
memory_limit(CLI) liegt bei 150 MiB (157 286 400 B = 150×1024×1024). - Der Fehler entsteht beim Sammeln von Metrik-Samples (
BaseMetric::$samples[] = $sample;). Ein langer Job-Lauf hat so viele Samples angehäuft, dass 150 MiB nicht mehr reichen.
Schnellmaßnahmen (sofort probieren)
- Einmalig mehr Speicher geben (nur für diesen Lauf):
php -d memory_limit=512M maintenance/run.php runJobs- (Bei großem Backlog ggf. 768M oder 1024M testen.)
- In kleineren Chargen laufen lassen (verhindert Sample-Staus im selben Prozess):
php -d memory_limit=512M maintenance/run.php runJobs --maxjobs 200- („200“ als Startwert; bei Bedarf kleiner/größer.)
- Problematische Jobtypen isolieren (um den Übeltäter zu finden):
php maintenance/showJobs.php --group# dann z.B.:php -d memory_limit=512M maintenance/run.php runJobs --type refreshLinks --maxjobs 200php -d memory_limit=512M maintenance/run.php runJobs --type wikibase-addUsagesForPage --maxjobs 200php -d memory_limit=512M maintenance/run.php runJobs --type smw.update --maxjobs 200
Dauerhafte Abhilfe / Ursachen eingrenzen
- CLI-
memory_limiterhöhen (nicht zu hoch fürs Tagesgeschäft, aber für Wartung sinnvoll, z. B. 512M):- Pfad finden:
php -i | grep "Loaded Configuration File" - In der CLI-php.ini
memory_limit = 512Msetzen (gilt nur für CLI, nicht für FPM/Apache).
- Pfad finden:
- Metriken/Monitoring vorübergehend deaktivieren, falls konfiguriert (StatsD/Prometheus o. ä.): Kommentiere in
LocalSettings.phpdeine Metrics-/Stats-Konfiguration testweise aus. Wenn der Fehler dann weg ist, war die Metrik-Sampling-Menge der Trigger (BaseMetric puffert Samples pro Prozess). - Jobs nach Installation von Wikibase/Lexeme & SMW: Nach Neuinstallationen entsteht oft ein großer Backlog (Links neu berechnen, Usages, SMW-Updates). Daher:
- Zuerst mit kleinen
--maxjobsmehrere Läufe machen. - Optional nachts per Cron in Chargen abarbeiten.
- Zuerst mit kleinen
Nützliche Prüfungen
- Aktuelles CLI-Limit verifizieren:
php -r 'echo ini_get("memory_limit"), PHP_EOL;' - Backlog-Größe anschauen:
php maintenance/showJobs.php --group
Einschätzung (Fakten vs. Mutmaßung)
- Fakt: Die 150 MiB stammen vom PHP-
memory_limitder CLI. - Mutmaßung (hoch plausibel): Die Kombination aus großem Jobbacklog (durch Wikibase/Lexeme/SMW) und aktivem Metrics-Sammeln führte zu einem vollen Samples-Array im langlaufenden Prozess.
Wenn du mir kurz die Ausgabe von showJobs.php --group gibst sowie dein aktuelles CLI-memory_limit, kann ich dir sagen, welchen Jobtyp du zuerst und mit welcher Batchgröße am effizientesten leerst – und ob sich ein temporäres Deaktivieren der Metriken bei dir lohnt.
Du:
1. php -r 'echo ini_get("memory_limit"), PHP_EOL;'
Antwort:
1024M
2. php maintenance/showJobs.php --group
*******************************************************************************
NOTE: Do not run maintenance scripts directly, use maintenance/run.php instead!
Running scripts directly has been deprecated in MediaWiki 1.40.
It may not work for some (or any) scripts in the future.
*******************************************************************************
smw.changePropagationDispatch: 1736 queued; 0 claimed (0 active, 0 abandoned); 0 delayed
smw.changePropagationClassUpdate: 0 queued; 1 claimed (0 active, 1 abandoned); 0 delayed
cirrusSearchLinksUpdate: 23962 queued; 0 claimed (0 active, 0 abandoned); 0 delayed
cirrusSearchElasticaWrite: 2382 queued; 2 claimed (2 active, 0 abandoned); 0 delayed
webVideoTranscode: 0 queued; 18 claimed (0 active, 18 abandoned); 0 delayed
webVideoTranscodePrioritized: 0 queued; 12 claimed (0 active, 12 abandoned); 0 delayed
replaceText: 0 queued; 8 claimed (0 active, 8 abandoned); 0 delayed
refreshLinks: 0 queued; 1 claimed (0 active, 1 abandoned); 0 delayed
aewi@M1Server mediawiki %
Da wurden einige Jobs abgebrochen.
Da ich alleiniger User des MediaWiki bin, wird eine Erhöhung des Memory für diese Aufgabe keinen Nachteil in Performance haben.
Im welchem Verzeichnis liegt die CLI-php.ini?
Müßte ich nicht bei MediaWiki eher die php.ini ämdern?
ChatGPT:
To adjust memory settings:
Stick to the known flags: For Cirrus jobs, ensure Elasticsearch is reachable (queued means not running). The CLI memory is currently set to 1024M, but an earlier crash showed 150M—likely Fertig |
Danke für die Daten – damit klärt sich der Widerspruch:
- Dein aktuelles CLI-Limit ist 1024M.
- Der Crash lief aber mit exakt 150 MiB (157 286 400 B). Das heißt: irgendetwas setzt für den Job-Lauf das Limit auf 150M herunter.
Am häufigsten sind es zwei Ursachen:
$wgMemoryLimitinLocalSettings.phpMediaWiki setzt damit selbstini_set('memory_limit', …)– auch im CLI. → Suche danach:Wenn dort z. B.grep -n "wgMemoryLimit" LocalSettings.php grep -n "memory_limit" LocalSettings.php
"$wgMemoryLimit = '150M';"steht: auf "1024M" setzen (oder temporär auskommentieren).- Anderes PHP bzw. andere php.ini beim Scriptlauf Auch wenn
php -r 'echo ini_get("memory_limit")'1024M zeigt, kannmaintenance/run.phpüber ein anderesphpgestartet worden sein (anderer Pfad, andere ini). → Prüfen:Typische macOS-Pfade:command -v php php -v php --ini # zeigt "Loaded Configuration File" + zusätzliche .ini
- Homebrew:
/opt/homebrew/etc/php/8.x/php.ini - (älter) Systemweit:
/etc/php.ini(oft nicht vorhanden) - MAMP/XAMPP haben eigene
php.iniunter deren Verzeichnissen
- Homebrew:
Was du konkret tun kannst (robust & schnell)
A) Ursache fixieren
- Variante 1 (MediaWiki-seitig, sicher): in
LocalSettings.phpnur fürs CLI hochsetzen:(Alternativ:if ( PHP_SAPI === 'cli' ) { ini_set( 'memory_limit', '1024M' ); }
\$wgMemoryLimit = "1024M";global – wirkt dann auch für Webrequests.) - Variante 2 (php.ini anpassen):Finde die richtige Datei mit
memory_limit = 1024M
php --iniund setze dort: Danach einmal neu testen:php -r 'echo ini_get("memory_limit"), PHP_EOL;'
B) Jobs geordnet abarbeiten (und Speicherpeak vermeiden)
Du hast große Backlogs, v. a. CirrusSearch und SMW-Propagation:
- In Chargen laufen lassen (reduziert Sample-/Heap-Wachstum pro Prozess):(Bei Bedarf
php maintenance/run.php runJobs --type cirrusSearchLinksUpdate --maxjobs 300 php maintenance/run.php runJobs --type cirrusSearchElasticaWrite --maxjobs 300 php maintenance/run.php runJobs --type smw.changePropagationDispatch --maxjobs 150
--maxjobskleiner machen, wenn du wieder in hohe Peaks läufst.) - Vorher optional hart ein hohes Limit geben (zusätzlich zur A-Konfiguration):
php -d memory_limit=1024M maintenance/run.php runJobs --type cirrusSearchLinksUpdate --maxjobs 300 - „claimed/abandoned“ in deiner Ausgabe sind Alt-Claims; wenn du sauber über
maintenance/run.phparbeitest, normalisiert sich das. Relevanter sind die queued Werte.
Warum der Crash genau an BaseMetric::$samples[]
Das ist nur die Stelle, an der der Speicher voll wurde. Lange Prozessläufe mit vielen Jobs sammeln Metrik-Samples im Prozess; eigentliche Treiber sind die job-spezifischen Datenstrukturen (v. a. Cirrus/SMW), nicht diese eine Zeile. Mit:
- höherem (korrektem) memory_limit und
- kleineren Chargen vermeidest du die Peaks.
Kurzer Check-Plan (3 Minuten)
grepinLocalSettings.php→ alles gefunden?wgMemoryLimit/ini_set('memory_limit', …)anpassen.php --ini→ richtige php.ini identifizieren; falls nötigmemory_limit=1024Msetzen.- Jobs typenweise in Chargen abarbeiten (Reihenfolge: CirrusLinksUpdate → ElasticaWrite → SMW-Dispatch).
Wenn du magst, poste mir kurz die Treffer aus grep -n "wgMemoryLimit\|memory_limit" LocalSettings.php und die erste Zeile von php --ini („Loaded Configuration File …“). Dann sage ich dir exakt, wo du bei dir am besten drehst und welche Batchgrößen für die drei Jobtypen erfahrungsgemäß gut laufen.
Du:
Danke für die Hinweise.
Auf https://www.mediawiki.org/wiki/Manual:$wgMemoryLimit steht folgendes:
$wgMemoryLimit default 50M
The installation script used to insert ini_set( 'memory_limit', '20M' ); in LocalSettings.php if the memory limit was below 20M.
In meinem LocalSettings.php ist kein Eintrag zu $wgMemoryLimit enthalten.
Soll ich "$wgMemoryLimit = '1024M';" setzen?
ChatGPT:
| Ich empfehle, das $wgMemoryLimit auf '1024M' in der LocalSettings zu setzen, um sicherzustellen, dass der CLI-Prozess respektiert wird. PHP.ini könnte auch verwendet werden, doch früher war die effektive Einstellung bei 150M. Setze es früh in LocalSettings, idealerweise nach den "includes". Für Web wird 256-512M empfohlen.
Fertig |
Kurzantwort: Ja. Setze $wgMemoryLimit — das ist der saubere MediaWiki-Weg und stellt sicher, dass auch CLI-Skripte(runJobs) mit dem gewünschten Limit laufen.
Empfohlene Einstellung
Wenn du fürs Web sparsam bleiben willst, aber CLI großzügig:
# In LocalSettings.php (am besten relativ weit oben, nach $wgServer etc.)
$wgMemoryLimit = '512M'; // für Webrequests ausreichend
if ( PHP_SAPI === 'cli' ) {
$wgMemoryLimit = '1024M'; // für Wartungsskripte/runJobs
}
Wenn dir egal ist, dass auch Web 1 GiB bekommt, kannst du einfach: $wgMemoryLimit = '1024M';
Warum das hilft
- MediaWiki setzt beim Start ini_set('memory_limit', $wgMemoryLimit).
- Damit überschreibst du die 150 MiB, die bei dir effektiv gegriffen haben (wahrscheinlich von irgendwoher vererbt), auch im CLI-Kontext.
Verifizieren
Nach dem Speichern: php maintenance/run.php eval.php -- 'echo ini_get("memory_limit"), PHP_EOL;'
Sollte 1024M (im CLI-Fall) ausgeben.
Danach Jobs wieder anwerfen (am besten in Chargen)
php maintenance/run.php runJobs --type cirrusSearchLinksUpdate --maxjobs 300
php maintenance/run.php runJobs --type cirrusSearchElasticaWrite --maxjobs 300
php maintenance/run.php runJobs --type smw.changePropagationDispatch --maxjobs 150
Wenn noch Fragen: zeig mir kurz die Ausgabe des eval.php-Checks—dann feintunen wir ggf. (Batchgrößen, Reihenfolge).
Du:
1. Ich habe $wgMemoryLimit = '1024M'; gesetzt
2. zu "Verifizieren Nach dem Speichern":
php maintenance/run.php eval.php -- 'echo ini_get("memory_limit"), PHP_EOL;'
gibt keine Antwort sondern startet irgendetwas oder bleibt mit ">" hängen.
3. Ich habe php maintenance/run.php runJobs erneut gestartet.
Während es zuvor häufig "Fatal Error …" wegen Memory gab, trat die Warnung seither nicht weiter auf.
Nachteile in Performance habe ich keine bemerkt. Der Fehler scheint damit behoben. Danke für deine Unterstützung. Wir wenden uns hiernach wieder dem vorhergehenden Thema Extension:WikiBaseLexeme zu.
ChatGPT:
Ich denke, das Problem könnte durch fehlende und zusätzliche Zeichen wie Anführungszeichen oder die Art und Weise, wie die Shell die doppelten Anführungszeichen verarbeitet, entstehen. Die Verwendung von eval.php sollte funktionieren, aber die Shell könnte die inneren Anführungszeichen nicht korrekt verarbeiten, was zu einer interaktiven Eingabeaufforderung führt.
In zsh sollten Single-Quotes das Problem nicht verursachen, aber der ">"-Prompt deutet darauf hin, dass ein Anführungszeichen fehlt – das kann passieren, wenn die Shell denkt, dass ein Zitat nicht geschlossen wurde. Das bedeutet wahrscheinlich, dass die Ausführung ohne Parameter die interaktive Eingabeaufforderung startet. Ein Vorschlag: Einfach mit Ctrl-D beenden und den Die korrekte Verwendung von Die Frage zur Bereinigung von verlassenen Ansprüchen könnte am besten durch das Verwenden des Warteskripts wie Fertig |
Super — dann haben wir die Ursache gefunden und sauber entschärft. 👍
Kurz zur eval.php-“>” Prompt:
- Das
>ist der interaktive Prompt voneval.php. Er erscheint, wenn dueval.phpohne auswertbaren Einzeiler gestartet hast (oder wenn die Shell-Quotes nicht passten). Beenden mit Strg-D. - Für einen Einzeiler (nicht-interaktiv) nimm am besten abwechselnde Anführungszeichen, dann kollidiert nichts:(Oder umgekehrt mit inneren
php maintenance/run.php eval.php -- "echo ini_get('memory_limit'), PHP_EOL;"
"…", äußeren'…'.)
Zum Ergebnis:
- Mit
$wgMemoryLimit = '1024M';ist dein Job-Runner jetzt unter MediaWiki-Kontrolle bei 1 GiB gelandet; deshalb sind die vorherigen „Allowed memory size … 150 MiB“ weg. Performance-Nachteile im Ein-User-Setup sind hier praktisch nicht zu erwarten.
Kleiner Betriebs-Tipp (optional):
php maintenance/run.php runJobs --type cirrusSearchLinksUpdate --maxjobs 300
php maintenance/run.php runJobs --type cirrusSearchElasticaWrite --maxjobs 300
php maintenance/run.php runJobs --type smw.changePropagationDispatch --maxjobs 150
Wenn du künftig wieder große Backlogs hast (z. B. nach Schema- oder Masseneingriffen), kannst du weiterhin in Chargen laufen lassen:
Das hält Speicherpeaks pro Prozess klein.
Wenn du soweit durch bist, springen wir gern zurück zu WikibaseLexeme. Sag einfach, womit wir dort konkret ansetzen sollen (z. B. Sinnvolle erste Lexeme-Workflows, Properties/Forms, SMW-Brücken, oder Indizierung/Cirrus-Best-Practices).
Du:
Danke für die Hinweise.
Derzeit ändere ich viele Einträge und Kategorien mittels RplaceText.
Ich muß keine Rücksicht auf Performance nehmen, kann also große Aufgaben in einem Rutsch ausführen lassen, was mir lieber ist, da ich dann damit schneller durch bin und die nächste größere Aufgabe angehen kann.
cirrusSearchElasticaWrite hat noch 2285 queued und läuft nun durch, ohne daß ich immer wieder neue Chargen starten muß.
ChatGPT:
| We need to respond warmly and acknowledge progress here. The web.run isn’t required; it’s a local tech process. When dealing with large batches, remember potential pitfalls: Elasticsearch issues, disk watermarks, and throttle settings. Running jobs in parallel could work, but be cautious with job concurrency and DB locking. Have ReplaceText specifics stored, and consider SMW rebuild after ReplaceText jobs.
When many categories change, SMW handles the propagation, but running an SMW rebuild could be heavy, though not always necessary if jobs work. After ReplaceText, expect both CirrusSearchElasticaWrite and LinksUpdate jobs. Consider temporarily adjusting CirrusSearch write queue and Elasticsearch batch sizes, but keep things simple unless needed. To maintain stability during a "one-shot" run, check the memory limit and consider setting To avoid misinformation, it’s important to monitor Elasticsearch’s heap usage and disk space. You can check Elasticsearch health with these commands:
Fertig |
Klingt gut — dann lass ihn „durchrödeln“. 👍
Ein paar kompakte Profi-Hinweise für deinen „Alles-in-einem-Rutsch“-Ansatz mit ReplaceText + Cirrus/SMW:
Stabil & schnell bei großen Job-Wellen
- Speicherlimit passt jetzt. Für lange Läufe kannst du zusätzlich (optional) pro Prozess die Peaks klein halten, indem du typenweise abarbeitest (nur wenn du merkst, dass es stockt):(Ohne
php maintenance/run.php runJobs --type cirrusSearchLinksUpdate php maintenance/run.php runJobs --type cirrusSearchElasticaWrite php maintenance/run.php runJobs --type smw.changePropagationDispatch
--maxjobsläuft er komplett durch – genau dein Stil.) - Elasticsearch im Blick behalten (falls lokal): Bei sehr großen Writes prüfen:Wenn Heap >75–80 % klettert oder der Cluster gelb/rot wird, kurz pausieren und weiterlaufen lassen. Häufige Bremsen: low/high disk watermark oder circuit_breaker (Heap). Dann Platz schaffen bzw. ES neu starten.
curl -s localhost:9200/_cat/health?v curl -s localhost:9200/_cat/indices?v curl -s localhost:9200/_nodes/stats/jvm?pretty | grep -E "heap_used|heap_max" -n
- Nach großen ReplaceText-Läufen mit Seitenverschiebungen (Titeländerungen):
- Doppelte Weiterleitungen reparieren:
php maintenance/run.php fixDoubleRedirects.php - Optional: Links neu berechnen, falls du Unstimmigkeiten siehst:
php maintenance/run.php refreshLinks.php(Beides triggert erneut Jobs—bei dir okay.)
- Doppelte Weiterleitungen reparieren:
- SMW-Konsistenz
- Normalfall: Jobs genügen (smw.changePropagation…).
- Nur falls du echte Inkonsistenzen siehst (fehlende/alte Werte trotz fertiger Jobs):
php extensions/SemanticMediaWiki/maintenance/rebuildData.php --with-maintenance-log(Vorher Jobqueue leer laufen lassen; rebuild ist die „große Keule“.)
- ReplaceText-Tipp
- Wenn du Kategorienamen massenhaft änderst: leere Alt-Kategorien kannst du später leicht finden (Spezialseiten: Wanted/Orphaned/Unused Categories) und wegräumen.
Kurzfazit
$wgMemoryLimit = '1024M';hat dein ursprüngliches 150-MiB-Bottleneck entfernt.- Du kannst die restlichen cirrusSearchElasticaWrite in einem Rutsch durchlaufen lassen.
- Behalte nur ES-Heap und Platte im Auge; ansonsten: laufen lassen.
Wenn du bereit bist, springen wir nahtlos zu WikibaseLexeme weiter. Was ist dein nächster Schritt dort? (z. B. sinnvolle Property-Sets für Lexeme, Workflows fürs Anlegen/Verknüpfen, oder SMW-Brücke/Abfragen über Lexeme?)
Du:
Danke für die Hinweise, werde ich nach Bedarf beachten.
Zur Kenntnisnahme:
Du gabst mir die Anweisung php maintenance/showJobs.php --group
der richtigere Befehl für MW ab 1.40 lautet php maintenance/run.php showJobs --group
Ich muß keine Jobs nach JobTyop zur ausführung bringen, ich lasse sie einfach alle ausführen – das Ausführen behindert meine Tätigkeit nicht wirklich.
ChatGPT:
| Nikolaos bevorzugt formelle oder informelle Ansprache. Da dies jedoch keine neue Unterhaltung ist, gebe ich keinen Zeitstempel an. Ich stelle also die korrigierten Befehle zur Verfügung: Ein bash-Skript wie „while php maintenance/run.php showJobs –quiet | grep -q 'queued'; do php maintenance/run.php runJobs –maxjobs 500; done“ funktioniert. Erwähne auch die --wait Option für kontinuierliche Ausführung.
Es scheint, dass
Fertig |
Guter Hinweis, danke! Du hast völlig recht: ab MW 1.40 ist der korrekte Aufruf php maintenance/run.php showJobs --group
Ich korrigiere meine Notation entsprechend.
Kurz-Cheat-Sheet (MW 1.40+), passend zu deinem „alles in einem Rutsch“-Vorgehen: php maintenance/run.php showJobs --group
- Job-Übersicht gruppiert
- Alle Jobs komplett abarbeiten (ohne Typfilter)
php maintenance/run.php runJobs - Optional: große Läufe mit hartem Limit (nur falls nötig)
php -d memory_limit=1024M maintenance/run.php runJobs - Doppelte Weiterleitungen reparieren (nach großen Umbenennungen/ReplaceText)
php maintenance/run.php fixDoubleRedirects - Links neu berechnen (nur bei Bedarf)
php maintenance/run.php refreshLinks - SMW-Rebuild (nur wenn Inkonsistenzen sichtbar bleiben; große Keule)
php maintenance/run.php extensions/SemanticMediaWiki/maintenance/rebuildData.php -- --with-maintenance-log(Hinweis: Bei Extension-Skripten den doppelten--für run.php-Weitergabe beibehalten.)
Dein Ansatz, die Queue einfach durchlaufen zu lassen, ist in deinem Setup absolut ok—zumal das Memory-Thema jetzt sauber gelöst ist. Wenn du ready bist, springen wir zurück zu WikibaseLexeme.