WPML
Status
Gelöst
Gelöst in
2.3.8

Übersicht über das Problem

Ab Version 2.3.0 des Plugins WPML Medienübersetzung ist es möglich, Medien zwischen Übersetzungen zu übersetzen und zu synchronisieren.

Als Teil des Einrichtungsprozesses (der auch ausgeführt wird, wenn Sie von einer früheren Version migrieren), durchsucht WPML Media die gesamte Website nach Medien-URLs, die im Inhalt verwendet werden.

Das Markieren der Beiträge, die Medien enthalten, ist im weiteren Verlauf hilfreich, sodass bei bestimmten Ereignissen im Zusammenhang mit der Medienübersetzung (wie dem Übersetzen eines bestimmten Medienbeitrags) nur Beiträge durchsucht werden, die tatsächlich Medien enthalten, um den Inhalt mit übersetzten Medien zu aktualisieren.

Bei sehr großen Websites kann der Einrichtungsprozess jedoch die Datenbank belasten, was den gesamten Vorgang langsamer als erwartet macht.

Die Belastung wird größtenteils durch Abfragen verursacht, die erforderlich sind, um Anhang-IDs anhand von URLs zu identifizieren. Normalerweise kann die Anhang-ID aus den Attributen eines HTML-Tags ermittelt werden (z. B. id=”attachment_8” – hier ist 8 die ID des Anhangs). Wenn ein solches Attribut nicht verwendet wird, ermittelt WPML Media die ID aus der tatsächlichen URL. In diesem Fall werden zwei Arten von Abfragen verwendet:

  • Eine Abfrage, die mit dem Feld ‘guid’ in der Tabelle wp_posts abgeglichen wird
  • Eine weitere Abfrage, die mit den Feldern meta_value der Tabelle wp_postmeta abgeglichen wird.

Keines dieser Tabellenfelder ist jedoch standardmäßig indiziert. Da es sich um einen Textabgleich handelt (auch wenn es keine partielle Textsuche ist), kann dies bei großen Datenbanken langsam sein.

Problemumgehung

Eine Möglichkeit, dieses Problem zu umgehen, besteht darin, (zumindest vorübergehend) Indizes für diese Felder hinzuzufügen.
Sie können dies mit zwei SQL-Abfragen wie den folgenden tun:

ALTER TABLE `wp_posts` ADD INDEX `guid` (`guid`); ALTER TABLE `wp_postmeta` ADD INDEX `meta_value` (`meta_value`(512));

Diese Ergänzungen sollten keine anderen Nebenwirkungen auf Ihre Datenbank haben, außer dass die physische Größe der Datenbank auf der Festplatte geringfügig zunimmt. Wenn Sie diese nach dem Ausführen der Einrichtung von WPML Media lieber wieder rückgängig machen möchten, können Sie dies mit den folgenden zwei MySQL-Abfragen tun:

ALTER TABLE `wp_posts` DROP INDEX `guid`; ALTER TABLE `wp_postmeta` DROP INDEX `meta_value`;

Hinweis: Das Präfix wp_ für die in den Abfragen erwähnten Tabellen kann je nach Ihrer WordPress-Konfiguration unterschiedlich sein. Normalerweise und standardmäßig ist es wp_

Beispiel einer Fallstudie: Auf einer Website mit etwa 140.000 Anhängen und etwa 5.000 Beiträgen kann die Einrichtung mehr als 30 Minuten dauern. Nach dem Hinzufügen der Indizes läuft die Einrichtung in wenigen Minuten durch. Die Tests wurden in einer regulären Entwicklungsumgebung durchgeführt. Diese Werte können auf einem tatsächlichen Live-Server sogar noch besser ausfallen.

Alle bekannten Probleme →