Утечка памяти в Wordpress

В настоящее время я разрабатываю плагин для Wordpress. Недавно у меня начались проблемы, когда я попытался открыть страницу веб-сайта в моей локальной установке. Всякий раз, когда я пытаюсь открыть его в новом окне Chrome в режиме инкогнито, я получаю ошибку 500. Удаление файлов cookie из обычного режима Chrome также вызывает проблему.

Журналы 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 также временно решает проблему.

С этого момента я не знаю, что еще я могу попробовать. Как я могу навсегда решить эту проблему?

"...но затем снова всплыли на поверхность через некоторое время" Не могли бы вы пояснить? Проблема появилась до или после повторного включения плагина W3 TC?

JamesHoux 19.07.2019 00:27

Может быть полезно увидеть трассировку отладки, когда проблема возникает с отключенным W3 TC.

JamesHoux 19.07.2019 00:28

@JamesHoux Проблема присутствовала как с включенным W3 TC, так и без него. Кроме того, трассировка всегда одинакова, даже если W3 TC отключен. Должен ли я попытаться полностью удалить папку плагина?

tyassine 19.07.2019 10:36

Это звучит очень подозрительно. Насколько я знаю, WordPress работает таким образом, что отключенный плагин не должен запускать какой-либо код. Я никогда не слышал о поведении, которое вы описываете. Вы можете попробовать удалить папку плагина W3 TC, чтобы посмотреть, что произойдет.

JamesHoux 19.07.2019 16:45

@JamesHoux Итак, я удалил полностью удаленный плагин W3 TC, следуя руководству это. Теперь все в порядке. Я до сих пор не знаю, как плагин работал даже после того, как я его отключил.

tyassine 23.07.2019 14:14

Рад, что вы решили это. Спасибо за продолжение. Это полезно знать.

JamesHoux 23.07.2019 17:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
6
1 290
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема, похоже, связана с плагином W3 TC. Полное удаление решило проблему для меня.

Другие вопросы по теме