Zum Inhalt springen Zur Seitenleiste springen

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.

Sun Mon Tue Wed Thu Fri Sat
- 8:00 – 13:00 9:00 – 13:00 9:00 – 13:00 8:00 – 12:00 8:00 – 12:00 -
- 14:00 – 17:00 14:00 – 18:00 14:00 – 18:00 13:00 – 17:00 13:00 – 17:00 -

Supporter-Zeitzone: Europe/Zagreb (GMT+01:00)

Schlagwörter: 

Dieses Thema enthält 7 Antworten, hat 0 Stimmen.

Zuletzt aktualisiert von Bruno Kos Vor 2 Tage, 14 Stunden.

Assistiert von: Bruno Kos.

Autor Beiträge
Dezember 10, 2025 um 7:22 a.m. #17650116

georgW-7

Hi WPML Support,
wir haben ein Problem mit der WPML Menü-Synchronisation (WPML → WP Menus Sync): Der Prozess startet, zeigt aber keinen Fortschritt und läuft schließlich in ein Timeout.

Umgebung / Symptome

* WordPress Website mit WPML (Multilingual CMS).
* Beim Klick auf „Synchronisieren“ / „Änderungen anwenden“ wird ein AJAX-Request an `wp-admin/admin-ajax.php` ausgelöst.
* Der relevante Request ist `action=icl_msync_confirm` und schlägt reproduzierbar mit HTTP **524 (Cloudflare Timeout)** fehl.
* Das passiert auch dann, wenn ich nur einen einzelnen Menüeintrag zur Synchronisation auswähle.
* Dadurch bleibt die WPML-UI ohne Fortschritt und die Synchronisation wird nie abgeschlossen.

Was wir bereits getestet haben

* Auf der Staging-Umgebung haben wir alle von uns stammenden Plugins deaktiviert und zusätzlich auf ein Standard-WordPress-Theme gewechselt.
* Das Verhalten bleibt unverändert (weiterhin 524 Timeout).
* In den Response Headers ist `cf-ray` vorhanden und die Remote-IP ist 162.159.x.x → der Request läuft über Cloudflare/Edge und wird offenbar nach ~100 Sekunden abgebrochen.

Fragen / Bitte um Unterstützung

1. Ist es erwartbar, dass `icl_msync_confirm` als einzelner, langer Request läuft?
2. Gibt es eine Möglichkeit, die Menü-Synchronisation in kleinere Batches bzw. mehrere kürzere AJAX-Calls aufzuteilen, damit sie hinter Cloudflare’s Request-Limit fertig werden kann?
3. Welche WPML-Troubleshooting-Schritte empfiehlt ihr speziell in diesem Fall (z.B. Ghost entries entfernen, Cache leeren, Collation/Tabellen reparieren haben wir schon gemacht), um die Laufzeit zu reduzieren?
4. Gibt es eine empfohlene Alternative (z.B. WP-CLI/Tooling) um die Menü-Synchronisation zuverlässig auszuführen?

Anhänge / Nachweise

* Screenshots aus Chrome DevTools mit dem 524 Timeout sowie dem Payload des AJAX-Requests (`action=icl_msync_confirm`).

Vielen Dank vorab!
Beste Grüße
Christoph

Dezember 10, 2025 um 7:53 a.m. #17650325

Bruno Kos
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Deutsch (Deutsch ) Französisch (Français )

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

Laut den bereitgestellten Screenshots wird der Request an /wp-admin/admin-ajax.php mit der Action icl_msync_confirm korrekt gesendet, endet jedoch nach ca. 100–120 Sekunden reproduzierbar mit einem HTTP 524 Cloudflare Timeout. Dies tritt auch bei der Synchronisation von nur einem einzigen Menüeintrag auf und ist daher nicht datenabhängig.

Dies scheint kein WPML oder Browser Problem zu sein. Bitte prüfen Sie die PHP Laufzeit (max_execution_time), PHP-FPM / FastCGI-Timeouts sowie eventuelle Nginx-/Apache-Proxy-Timeouts. Zusätzlich sollte geprüft werden, ob Cloudflare WAF Regeln oder interne Limits lange admin-ajax-POST-Requests abbrechen und ob der Request serverseitig vollständig ausgeführt oder vorzeitig beendet wird.

Es handelt sich hierbei um ein Server bzw. Cloudflare Timeout Problem, das auf Hosting Ebene untersucht werden muss.

Dezember 10, 2025 um 10:56 a.m. #17651738

georgW-7

Hi WPML Support,
kurzes Update nach Rücksprache mit unserem Hoster (Kinsta): Das Problem ist weiterhin 100% reproduzierbar und tritt auch auf, wenn wir nur **einen** Menüeintrag synchronisieren.

Kinsta hat serverseitig bereits temporär **max_execution_time** und **max_input_time** erhöht, trotzdem endet der AJAX-Call weiterhin mit **HTTP 524**. Laut Kinsta ist bei deren Cloudflare-Integration ein **Response Timeout von 185 Sekunden** gesetzt und **nicht änderbar**. Der WPML-Call `admin-ajax.php` → `action=icl_msync_confirm` läuft regelmäßig bis ca. **3.1 Minuten** und wird dann abgebrochen (entspricht genau den ~185s).

Wichtig: Auf Kinsta ist Cloudflare/Edge **integriert**, d. h. wir können Cloudflare **nicht “temporär deaktivieren/umgehen”** (ohne Plattformwechsel). DB-Optimierung ist ebenfalls nicht verfügbar, da WPML die Tabellen bereits als „optimiert“ einstuft.

Damit brauchen wir eine WPML-seitige Lösung bzw. einen WPML-seitigen Workaround:

* Gibt es eine Möglichkeit, `icl_msync_confirm` in **kleinere Batches** aufzuteilen (mehrere kurze Requests statt ein langer)?
* Gibt es einen **WP-CLI**/serverseitigen Weg, die Menü-Sync ohne Browser/AJAX durchzuführen?
* Falls bekannt: Gibt es einen **Patch/Hotfix** oder ein Flag/Filter, um den besonders langsamen Teil der Menü-Sync (z. B. Orphans/Checks) zu entschärfen?

Wir können gerne zusätzliche Logs/Debug-Infos liefern, aber aktuell ist der Blocker: WPML Menü-Sync benötigt länger als 185s und wird dadurch in unserer Hosting-Architektur zuverlässig abgebrochen.

Danke & beste Grüße
Christoph

Dezember 10, 2025 um 1:31 p.m. #17652432

Bruno Kos
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Deutsch (Deutsch ) Französisch (Français )

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

Um nun gezielt analysieren zu können, welcher Teil der WPML Menü ynchronisation die Laufzeit von über 180 Sekunden verursacht, benötigen wir noch folgende gezielte Diagnosedaten aus einem reproduzierbar fehlgeschlagenen Versuch:

* Die zugehörige cf-ray-ID aus der 524-Response eines fehlgeschlagenen Sync-Versuchs.
* Einen Auszug aus dem PHP-Error-Log oder, falls vorhanden, aus dem PHP-FPM Slow Log für den Zeitpunkt des fehlgeschlagenen Requests.
* Falls möglich, einen Auszug aus dem MySQL Slow Query Log oder alternativ einen Screenshot/Export aus der Kinsta APM, der die langsamsten Datenbankabfragen während dieses Requests zeigt.
* Optional (falls vertretbar): die Datei /wp-content/debug.log, nachdem der fehlgeschlagene Sync einmal mit aktiviertem WP_DEBUG_LOG reproduziert wurde.

Diese Daten helfen uns direkt zu erkennen, ob die lange Laufzeit durch bestimmte Datenbankabfragen, Orphan-Bereinigungen oder andere interne Prüfungen verursacht wird.

Dezember 11, 2025 um 7:55 a.m. #17654532

georgW-7

Hallo Bruno,

vielen Dank für deine Rückmeldung und die konkrete Liste der benötigten Daten.
Ich habe den Menü-Sync auf unserer **Staging-Umgebung** erneut reproduziert und kann euch nun folgendes liefern:

**1) Cloudflare cf-ray ID (524-Response)**

* Request: `POST /wp-admin/admin-ajax.php` mit `action=icl_msync_confirm`
* Cloudflare Ray ID: **9ac2c296b1de5ad5**
* Der Request läuft ca. 3 Minuten und endet dann mit HTTP 524 (Screenshots aus dem Network-Tab und der Cloudflare-Fehlerseite habe ich angehängt).

**2) PHP Error Log / PHP-FPM Log**

Zum gleichen Zeitraum erscheinen im Error-Log wiederholt folgende Einträge (Auszug):

```text
2025.12.11. 06:04:45
[error] 42776#42776: *2314 FastCGI sent in stderr: "PHP message: PHP Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the

acf

domain was triggered too early. ...
PHP message: PHP Deprecated: Optional parameter $menuId declared before required parameter $depth is implicitly treated as a required parameter in /www/casarista_591/public/wp-content/themes/casarista/functions.php on line 8309" while reading response header from upstream, client: 84.115.210.196, server: staging.casarista.com, request: "POST /wp-admin/admin-ajax.php HTTP/2.0", upstream: "versteckter Link:", host: "staging.casarista.com:61072", referrer: "versteckter Link"
```

Diese Notices/Deprecated-Meldungen treten bei jedem Menü-Sync auf, es gibt aber **keinen PHP Fatal Error** bei diesem Lauf – der Request läuft einfach so lange, bis Cloudflare mit 524 abbricht.

Zur Vollständigkeit:
Bei einem früheren Testlauf **mit aktiviertem Kinsta APM** hatten wir einen Fatal Error wegen Speicherlimit:

```text
PHP Fatal error: Allowed memory size of 1073741824 bytes exhausted
(tried to allocate 33554440 bytes)
in /usr/share/apm/src/Collection/Collection.php on line 116
```

Daher haben wir APM für die jetzigen Tests deaktiviert, um das „normale“ Verhalten zu sehen. Ohne APM gibt es keinen Fatal Error, aber der Request erreicht weiterhin das Cloudflare-Timeout (~185 Sekunden).

**3) MySQL Slow Query Log / APM**

Wir haben auf dem Staging-Server das MariaDB Slow Query Log aktiviert und `long_query_time` testweise stark reduziert. Das Log `mysql-slow.log` enthält jedoch **keine Einträge** – nur den Header von MariaDB.
Parallel dazu haben wir mit **New Relic APM** gemessen:

* Die Datenbank-Operationen (CSV Export angehängt) zeigen **Durchschnittszeiten im Millisekunden-Bereich**, max. Werte < ~150 ms pro Query.
* Die WordPress Hooks (ebenfalls als CSV exportiert) liegen ebenfalls im Bereich weniger Millisekunden bis maximal einige hundert Millisekunden.
* Es gibt **keine einzelnen Queries oder Hooks im Bereich von mehreren Sekunden**, die die Gesamtlaufzeit von über 180 Sekunden erklären würden.

Aus unserer Sicht bedeutet das: Die lange Laufzeit von `icl_msync_confirm` entsteht nicht durch einzelne langsame Datenbankabfragen, sondern durch die PHP-Verarbeitung/Logik innerhalb des Menü-Sync-Prozesses (z. B. Verarbeitung großer Datenstrukturen, Orphan-Checks, etc.).

**4) debug.log**

`WP_DEBUG_LOG` ist aktiviert; im `wp-content/debug.log` finden sich die gleichen Notices/Deprecated-Hinweise wie im Error-Log, aber keine zusätzlichen Fehler oder Fatals im Zusammenhang mit dem Menü-Sync. Den relevanten Auszug habe ich ebenfalls angehängt.

---

**Frage / Bitte um nächsten Schritt**

Auf Basis dieser Daten scheint die Datenbank selbst performant zu sein, während der PHP-Prozess `icl_msync_confirm` insgesamt so lange läuft, dass er in unserer Kinsta/Cloudflare-Architektur nach ca. 185 Sekunden abgebrochen wird.

Könnt ihr auf dieser Grundlage eingrenzen,

* ob es in der Menü-Sync-Logik bekannte Stellen gibt, die sehr speicher- oder CPU-intensiv sind (z. B. Orphan-Bereinigung, `get_page_orphan_sql` oder ähnliche Routinen), und
* ob es dafür bereits einen Patch/Hotfix oder eine Möglichkeit gibt, die Synchronisation in kleinere Batches aufzuteilen (mehrere kürzere Requests statt eines sehr langen)?

Vielen Dank für eure Unterstützung und die weitere Analyse!

Beste Grüße
Christoph

Hier die Files (kann kein CSV hochladen)
versteckter Link

Dezember 11, 2025 um 11:32 a.m. #17655694

Bruno Kos
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Deutsch (Deutsch ) Französisch (Français )

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

Können Sie mir die WordPress-Anmeldedaten für die Seite zur Verfügung stellen?

https://wpml.org/purchase/support-policy/privacy-and-security-when-providing-debug-information-for-support/

Ich habe Ihre nächste Antwort als privat markiert, damit Sie die Anmeldedaten sicher hinzufügen können.

Dezember 11, 2025 um 2:13 p.m. #17656377

Bruno Kos
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Deutsch (Deutsch ) Französisch (Français )

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

Ich überprüfe dies mit unserem 2nd-Tier-Team und werde mich bei Ihnen melden, sobald ich Neuigkeiten oder Fragen für Sie habe.

Dezember 11, 2025 um 2:45 p.m. #17656529

Bruno Kos
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Deutsch (Deutsch ) Französisch (Français )

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

Um das Problem bei uns lokal besser untersuchen zu können, bräuchten wir bitte das Site-Package sowie die Datenbank (die Site-Package ohne Media-Dateien ist vollkommen ausreichend). Damit können wir eine lokale Umgebung einrichten und den Fehler gründlich debuggen.

Könnten Sie uns das bitte zusenden?