Speicherleck in WordPress

Lesezeit: 3 Minuten

Ich entwickle gerade ein Plugging für WordPress. Vor kurzem hatte ich einige Probleme, als ich versuchte, eine Seite der Website in meiner lokalen Installation zu öffnen. Immer wenn ich versuche, es in einem neuen Chrome-Inkognito-Fenster zu öffnen, erhalte ich einen 500-Fehler. Auch das Löschen von Cookies aus dem normalen Chrome-Modus löst das Problem aus.

Apache-Protokolle zeigten, dass ich das maximale Speicherlimit ausgeschöpft habe. Das Festlegen des Limits auf -1 führt zu einer unendlichen Speicherlast, sodass ich die Apache-Ausführung manuell anhalten muss. Ich habe dann xdebug aktiviert und den Debug-Modus eingeschaltet. Soweit ich weiß, hat xdebug eine maximale Verschachtelungsgrenze, also bekomme ich jetzt diesen Fehler. Der Aufrufstapel zeigt, dass es eine Schleife von Funktionsaufrufen gibt.

So sieht es aus:

( ! ) Error: Maximum function nesting level of '256' reached, aborting! in /.../wp-includes/wp-db.php on line 2030
Call Stack
#   Time    Memory  Function    Location
1   0.0008  397344  {main}( )   .../index.php:0
2   0.0010  397632  require( '.../wp-blog-header.php' ) .../index.php:17
3   0.0011  397984  require_once( '.../wp-load.php' )   .../wp-blog-header.php:13
4   0.0044  411632  require_once( '.../wp-config.php' ) .../wp-load.php:37
5   0.0046  413160  require_once( '.../wp-settings.php' )   .../wp-config.php:101
6   0.9406  10171032    do_action( )    .../wp-settings.php:375
7   0.9406  10171408    WP_Hook->do_action( )   .../plugin.php:465
8   0.9406  10171408    WP_Hook->apply_filters( )   .../class-wp-hook.php:310
9   0.9474  10227816    Classic_Editor::init_actions( ) .../class-wp-hook.php:286
10  0.9482  10229208    Classic_Editor::get_settings( ) .../classic-editor.php:42
11  0.9482  10229208    get_option( )   .../classic-editor.php:233
12  0.9484  10229528    W3TC\DbCache_Wpdb->get_row( )   .../option.php:100
13  0.9484  10229528    W3TC\DbCache_Wpdb->query( ) .../wp-db.php:2501
14  0.9484  10229528    W3TC\DbCache_WpdbInjection_QueryCaching->query( )   .../DbCache_Wpdb.php:167
15  0.9486  10229616    W3TC\Cache_File->get( ) .../DbCache_WpdbInjection_QueryCaching.php:143
16  0.9486  10229616    W3TC\Cache_File->get_with_old( )    .../Cache_Base.php:96
17  0.9486  10229616    W3TC\Cache_File->_get_with_old_raw( )   .../Cache_File.php:136
18  0.9486  10230048    W3TC\Cache_File->_get_path( )   .../Cache_File.php:154
19  0.9487  10230048    wp_hash( )  .../Cache_File.php:312
20  0.9487  10230048    wp_salt( )  .../pluggable.php:2259
21  0.9487  10230984    get_site_option( )  .../pluggable.php:2223
22  0.9487  10230984    get_network_option( )   .../option.php:1137
23  0.9488  10231024    get_option( )   .../option.php:1272
24  0.9490  10231344    W3TC\DbCache_Wpdb->get_row( )   .../option.php:100
.
.
.
252 0.9577  10249328    W3TC\DbCache_Wpdb->prepare( )   .../option.php:100
253 0.9577  10252168    array_walk ( )  .../wp-db.php:1378
254 0.9577  10252192    W3TC\DbCache_Wpdb->escape_by_ref( ) .../wp-db.php:1378
255 0.9577  10252192    W3TC\DbCache_Wpdb->_real_escape( )  .../wp-db.php:1258
256 0.9577  10252232    W3TC\DbCache_Wpdb->add_placeholder_escape( )

Die Zeilen 12 bis 23 wiederholen sich bis Zeile 252.

Ich habe versucht, die maximale Verschachtelungsebene auf 5000 festzulegen, aber das Limit wird immer erreicht.

Da die Protokolle darauf hinzudeuten scheinen, dass das Problem vom W3 TC-Plugging herrührt, habe ich versucht, es zu deaktivieren. Das Problem verschwand für eine Weile und ich konnte im Inkognito-Modus auf die Seite zugreifen, tauchte dann aber nach einiger Zeit wieder auf. Auch das Bereinigen des Caches mit W3 TC scheint das Problem vorübergehend zu lösen.

Von diesem Punkt an weiß ich nicht, was ich noch versuchen kann. Wie kann ich dieses Problem dauerhaft lösen?

  • “…aber dann nach einiger Zeit wieder aufgetaucht” Können Sie das bitte klarstellen? Ist das Problem vor oder nach der erneuten Aktivierung des W3 TC-Plug-ins erneut aufgetreten?

    – JamesHoux

    18. Juli 2019 um 22:27 Uhr

  • Es kann hilfreich sein, einen Debug-Trace anzuzeigen, wenn das Problem bei deaktiviertem W3 TC auftritt.

    – JamesHoux

    18. Juli 2019 um 22:28 Uhr

  • @JamesHoux Das Problem war mit und ohne aktiviertem W3 TC vorhanden. Außerdem ist der Trace auch bei deaktiviertem W3 TC immer gleich. Soll ich versuchen, den Ordner des Plugins vollständig zu löschen?

    – Tyassin

    19. Juli 2019 um 8:36 Uhr

  • Das klingt sehr verdächtig. Soweit ich wusste, sollte ein deaktiviertes Plugin nach der Funktionsweise von WordPress keinen Code ausführen können. Das von dir beschriebene Verhalten habe ich noch nie gehört. Sie könnten versuchen, den W3 TC-Plugin-Ordner zu löschen, um zu sehen, was passiert.

    – JamesHoux

    19. Juli 2019 um 14:45 Uhr

  • @JamesHoux Also habe ich das folgende vollständig gelöschte W3 TC-Plugin gelöscht Dies Lernprogramm. Alles ist jetzt gut. Ich weiß immer noch nicht, wie das Plugin funktioniert, auch nachdem ich es deaktiviert habe.

    – Tyassin

    23. Juli 2019 um 12:14 Uhr

Das Problem scheint mit dem W3 TC-Plugin zusammenzuhängen. Das vollständige Entfernen hat das Problem bei mir behoben.

1229670cookie-checkSpeicherleck in WordPress

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy