Wordpress中的内存泄漏

时间:2019-07-18 14:02:28

标签: php wordpress

我目前正在为Wordpress开发插件。最近,当我尝试在本地安装中打开网站页面时,我开始遇到一些问题。每当我尝试在新的Chrome隐身窗口中打开它时,都会出现500错误。从正常的Chrome模式删除Cookie也会触发此问题。

Apache日志显示我已用尽最大内存限制。将限制设置为-1会导致无限的内存负载,因此我必须手动停止apache的执行。然后,我启用了xdebug并打开了调试模式。据我了解,xdebug具有最大的嵌套限制,所以这就是我现在得到的错误。调用堆栈表明存在一个函数调用循环。

这是它的样子:

( ! ) 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( )

第12至23行重复到第252行。

我尝试将最大嵌套级别设置为5000,但始终达到限制。

此外,由于日志似乎暗示该问题来自W3 TC堵塞,因此我尝试禁用它。问题消失了一段时间,我可以以隐身模式访问该站点,但过了一段时间后又浮出水面。使用W3 TC清理缓存似乎也可以暂时解决问题。

从这一点上来说,我不知道我还能尝试什么。我该如何永久解决此问题?

1 个答案:

答案 0 :(得分:2)

问题似乎与W3 TC插件有关。完全删除它可以解决我的问题。