Navigation überspringen

Dies ist das technische Support-Forum für WPML – das mehrsprachige WordPress-Plugin.

Mitlesen können alle, doch nur WPML-Kunden können hier Fragen veröffentlichen. Das WPML-Team antwortet im Forum an 6 Tagen pro Woche, 22 Stunden am Tag.

Schlagwörter: 

Dieses Thema enthält 25 Antworten, hat 2 Stimmen.

Zuletzt aktualisiert von Marcel Vor 1 Jahr, 1 Monat.

Assistiert von: Marcel.

Verfasser Beiträge
Oktober 12, 2023 unter 11:01 am #14565381

Marcel
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

Zeitzone: Europe/Madrid (GMT+01:00)

Hallo Thomas,

Query Monitor benötigt selbst bereits hohe Ressourcen, die Ergebnisse können daher "verfälscht" werden. Zudem wird es gerne auf Produktions-Webseiten dauerhaft aktiv gelassen, wobei somit bereits ein zusätzliches Performance-Problem entstehen kann.

Bei meinen Tests konnte ich nicht immer aber immer wieder HTTP-API Aufrufe im Query Monitor sehen, mit Calls zur GeoLocation, die sehr lange dauerten und Fehler zurücklieferten (siehe Bild im Anhang). Die waren nur zu beobachten, wenn WPML WC Multilingual und Multcurrency installiert ist. Und das, obwohl ich in Woocommerce die GeoLocation - die sich aber eher auf die Steuern bezieht - ausgeschaltet habe und der Modus für mehrere Währungen in Multicurrency auch nicht aktiv ist. Wie kommt es zu diesem Call?

Bitte stellen Sie eine Staging-Umgebung bereit, wo nur WPML, WooCommerce und WooCommerce Multilingua laktiviert ist. Dann können wir gerne genauer prüfen, was diesen Call auslöst. Wenn die Multi-Currency von unserer Seite deaktiviert ist, kann ich mir aktuell nicht erklären, was den Call auslöst.

Dazu bräuchte ich bitte temporären Zugriff (WP-Admin und FTP) auf Ihre Seite, vorzugsweise zu einer Test/Staging Seite, an der das Problem nach Möglichkeit repliziert wurde.

Die dafür benötigten Felder finden Sie unterhalb des Kommentarbereichs. Die Informationen, die Sie eingeben, sind privat, d.h. nur Sie und ich können sie sehen und haben Zugriff darauf.

WICHTIG
Bitte erstellen Sie eine Sicherungskopie der Site-Dateien und der Datenbank, bevor Sie uns Zugang gewähren.
-Wenn Sie die wp-admin/FTP-Felder nicht sehen, bedeutet dies, dass Ihre Post- und Website-Login-Daten ÖFFENTLICH gemacht werden. Posten Sie Ihre Website-Details NICHT, wenn Sie die erforderlichen wp-admin/FTP-Felder nicht sehen. Wenn Sie das nicht tun, bitten Sie mich, die private Box zu aktivieren. Die private Box sieht wie folgt aus:
versteckter Link

Freundliche Grüße
Marcel

Oktober 12, 2023 unter 11:10 am #14565489

thomasB-203

Hallo Marcel,
ja, das ist mir klar, dass der Query Monitor selbst Ressourcen braucht und ich werde diesen dann wieder deaktivieren.
Kannst Du Dir bitte das Problem mit der GeoLocation anschauen? Das Bild hatte ich ja angehängt.
Danke und Gruß
Thomas

Oktober 13, 2023 unter 7:37 am #14570441

Marcel
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

Zeitzone: Europe/Madrid (GMT+01:00)

Hallo Thomas,

könnten Sie bitte wieder den Zugang zur Staging Seite reaktivieren? Ich bekomme ein "FEHLER: Falscher Benutzername oder falsches Passwort.". Bitte aktualisieren Sie ebenso auf WPML 4.6.6.

Ich versuche dies in der Zwischenzeit auf einer Sandbox nachzustellen.

Vielen Dank!

Freundliche Grüße
Marcel

Oktober 13, 2023 unter 10:46 am #14572443

Marcel
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

Zeitzone: Europe/Madrid (GMT+01:00)

Hallo Thomas,

danke!

Sehr seltsam - prüfen Sie bitte die _options Table. Im Speziellen, ob es Probleme beim Speichern von Transients gibts.

Im Code von WooCommerce in \wp-content\plugins\woocommerce\includes\class-wc-geolocation.php, gibt keine Möglichkeit, den API-Schlüssel zu setzen, die Anfragen sollten entweder an ipinfo.io oder ip-api.com gehen. Aber nur, wenn die maxmind-Datenbank keine Länderinformationen zurückgibt und wenn kein Transient gesetzt ist.

Das gibt mir das Gefühl, dass:

1) Maxmind nicht richtig eingestellt ist / Die Datei fehlt / nicht zugänglich ist
2) Die Optionstabelle könnte beschädigt sein und daher keine Transienten speichern

Freundliche Grüße
Marcel

Oktober 13, 2023 unter 10:53 am #14572465

thomasB-203

Hallo Marcel,
ich hatte die Geolocation mal aktiv und einen Maxmind Schlüssel eingetragen, aber dies wieder deaktiviert. Es erfolgt auch kein Maxmind Aufruf. Mein Verständnis ist, es dürfte überhaupt kein Geolocation Aufruf erfolgen!?
Bitte kläre mich auf was ein Transient ist und wie ich dies in der _options Tabelle sehen kann.
Schönen Gruß
Thomas

Oktober 15, 2023 unter 3:49 pm #14579883

thomasB-203

Hallo Marcel,

über die Transients habe ich gelesen und es soweit verstanden.
Die Tabelle _options scheint in Ordnung zu sein und heute wurde ein Call zur Aktualisierung des Transients der Geolocation angezeigt (siehe Bild).
Wie gesagt verstehe ich nicht warum überhaupt die Geolocation aufgerufen wird, obwohl sie in Woocommerce deaktiviert ist und KEIN Maxmind Schlüssel eingetragen ist. Die Berechnung der Umsatzsteuer erfolgt ausschließlich auf Basis der vom Kunden angegeben Location.
Und diese Calls werden - soweit ich es gesehen habe - ausschließlich für Payment Gateways und nur dann ausgeführt, wenn Woocommerce multilingual / multicurrency aktiv ist, obwohl auch dort keine anderen Währungen aktiviert sind.

Schönen Gruß
Thomas

Geolocation Transient.JPG
Oktober 16, 2023 unter 1:45 pm #14585545

Marcel
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

Zeitzone: Europe/Madrid (GMT+01:00)

Hallo Thomas,

da ein Transient eine Art "Cache" der DB-Einträge sind, lässt sich das Problem damit erklären, dass die Einträge in der DB noch falsch sind.

Ich würde als ersten auf einer Staging versuchen, die Transients zu leeren. Dies können Sie entweder via WP-CLI (https://developer.wordpress.org/cli/commands/transient/) durchführen oder über ein Plugin wie versteckter Link.

Uns geht es jedoch dabei um das herausfinden, ob die _options Tabelle beschädigt ist. Wenn jedoch neue Einträge dort geschrieben werden, schaut es gut aus und der "Fehler" könnte also nur alte ausgelöst werden. Sollte es also danach nicht funktionieren, können wir dies gerne anhand einer lokalen Duplicator Kopie debuggen.

Der Grund ist der Folgende: Bei einem Besuch von einer bestimmten IP, wenn Sie die lokale maxmind Datenbank haben, wird die IP zu einem Land in einem transient zugeordnet. Dies erhalten Sie, sobald Sie einen MaxMind API Key hinterlegen. Wenn keine solche IP-Adresse gefunden wird, wird die Anfrage an die externe Website - ip-api.com geroutet. Dies sollte jedoch keine Überlastung auslösen, damit der Fehler 429 (Too Many Requests) ausgelöst wird.

Wir warten hier noch auf Feedback eines unserer WooCommerce Multilingual Entwicklers, ob dieser ggf. noch einen Tipp dazu hat.

Freundliche Grüße
Marcel

Oktober 19, 2023 unter 11:10 am #14614229

thomasB-203

Hallo Marcel,
welche Transients müsste ich löschen? Ich kann das ja direkt in phpmyadmin ohne Plugins oder WP-CLI. Soll ich auf der Staging Seite alle Transients in der Tabelle _options löschen oder nur die mit autoload='yes' oder welche genau?
Und was ich immer noch nicht verstanden habe: Egal ob MaxMind oder externe Website - ip-api.com...
Ich verstehe nicht warum überhaupt eine IP Adressenabfrage erfolgt.
Ich habe die Geolocation in Woocommerce unter "Voreingestellter Ort für Kunden" NICHT aktiv und in Woocommerce multilingual und multicurrency KEINE anderen Währungen aktiviert. Also warum die IP Adressenabfrage?? Diese erfolgt nach meinen Untersuchungen nur wenn Woocommerce multilingual und multicurrency aktiv ist.
Da habe ich noch keine Antwort gesehen bzw. ich habe sie nicht verstanden.
Schönen Gruß
Thomas

Oktober 19, 2023 unter 12:24 pm #14614715

Marcel
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

Zeitzone: Europe/Madrid (GMT+01:00)

Hallo Thomas,

ich würde hier zuerst versuchen, alle zu löschen. Und war nicht via die DB direkt, sondern über ein spezielles Transient Plugin oder WP-CLI, wo Details, Ablaufzeit etc. besser visualisiert werden und sichergestellt wird, dass alles entfernt wurde.

Ich verstehe nicht warum überhaupt eine IP Adressenabfrage erfolgt.

Sie hatten MaxMind einmalig aktiv, damit wird die IP einem Land als Transient zugeordnet. Dies passiert automatisch, sobald der MaxMind Key hinterlegt wird. Sobald die IP nicht gefunden wird, löst es einen Call an die genannte externe API aus. Egal ob die Funktion aktiv ist oder nicht, die Funktion wird von WooCommerce weiterhin aufgerufen.

Einfach gesagt, vermuten wir, dass ein "gechacheter Eintrag" somit in der DB den Call ausgelöst.

Der Code unter wp-content\plugins\woocommerce\includes\class-wc-geolocation.php sagt, dass die Aufrufe entweder an ipinfo.io oder ip-api.com gehen, sobald die Maxmind Datenbank keine Länderinformation zurückgibt UND WENN KEIN Transient gesetzt ist.

Damit schließen wir somit einen Fehler dadurch aus und können es auf fehlerhafte DB Einträge der Länderinformationen eingrenzen. Weitere Details können wir hier nur über ein PHP Debugging bestimmen. Wenn es also nach der Transient Bereinigung weiterhin auftritt, geben Sie mir bitte Bescheid und stellen Sie eine Seitenkopie via Duplicator bereit, da wir das exakte Problem nur über ein Debugging der Variablen bestimmen können.

Freundliche Grüße
Marcel

Oktober 26, 2023 unter 1:05 am #14665733

thomasB-203

Hallo Marcel,
danke und sorry für die späte Rückmeldung. Ich hatte dieser Woche keine Zeit, mich um das Problem zu kümmern.
Wegen der Tranients werde ich mir das Plugin versteckter Link installieren, dann melde ich mich nochmal.
Schönen Gruß
Thomas

Oktober 26, 2023 unter 8:39 am #14668083

Marcel
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

Zeitzone: Europe/Madrid (GMT+01:00)

Hallo Thomas,

danke für die Info, geht in Ordnung!

Freundliche Grüße
Marcel

Oktober 27, 2023 unter 11:18 pm #14682383

thomasB-203

Hallo Marcel,
das von Dir angesprochene Plugin Transient Cleaner lässt sich nur bis zur WordPress Version 4.9 aktivieren.
Ich habe die Transients in der options Tabelle jetzt manuell aufgeräumt. Da war sogar ein riesiger Eintrag einer Multisite enthalten, die ich gar nicht habe aber evtl. versuchsweise oder versehentlich aktiviert war.
Und siehe da, die HTTP API Aufrufe erfolgen nicht mehr und die Seite ist generell immerhin 1 Sekunde schneller geworden.
Danke Dir!
Schönen Gruß
Thomas