Одно и то же сообщение в логах повторяется тысячи раз в файле debug.log
Я отлаживал свой PHP-код на сайте WordPress, записывая сообщения в debug.log с помощью error_log($message) или trigger_error($message).
Мои сообщения в этих логах продолжают выводиться тысячи раз в файле debug.log из одного и того же оператора, объявленного в functions.php (для примера здесь я логирую из functions.php темы, что приводит к той же проблеме множественного вывода, хотя я отлаживал из плагина для сниппетов).
Чтобы проверить, вызвана ли эта проблема моим кодом в functions.php или плагином для сниппетов, который вызывается несколько раз, я попробовал логировать разными механизмами [chrome console log и chrome browser alert]. В результате PHP-сообщение debug.log выводилось многократно, тогда как chrome console log и alert в браузере выводились только один раз. Поэтому я считаю, что мой код не выполняется несколько раз, а сообщения debug.log, выводимые error_log или trigger_error, печатаются многократно и продолжают выводиться тысячи раз.
Я подумал, что это может быть связано с моей локальной средой разработки, но когда я попробовал то же самое в новой установке WordPress в реальной среде, произошло то же самое. Пока не нашел решения/объяснения.
МОЙ functions.php В ТЕМЕ СО ВСЕМ ПРОТЕСТИРОВАННЫМ КОДОМ:
.
.
.
//непрерывно выводится в debug.log (много раз)
$debug_log = "DEBUG-debug log";
trigger_error($debug_log);
//ИЛИ
error_log($debug_log);
//выводится только один раз в консоли chrome
$debug_console = "DEBUG-console";
echo "<script>console.log('$debug_console');</script>";
//выводится только один раз в chrome как alert
$debug_alert = "DEBUG-alert";
echo "<script type='text/javascript'>alert('$debug_alert');</script>";
МОЙ ФАЙЛ debug.log ВЫГЛЯДИТ ТАК:
[14-Jan-2019 01:05:50 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:05:51 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:05:51 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:05:54 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:05:55 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:05:59 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:06:04 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:06:25 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:06:26 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:06:26 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:06:27 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:06:29 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:06:31 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:06:31 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:06:31 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:06:32 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:06:47 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:07:02 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:07:17 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:07:29 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:07:31 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:07:32 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:07:47 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
[14-Jan-2019 01:08:02 UTC] PHP Notice: DEBUG-debug log in /app/public/wp-content/themes/Avada-Child-Theme/functions.php on line 15
РЕДАКТИРОВАНИЕ: Уточнение вопроса Чтобы было понятнее: сообщение в логах выводится многократно (и продолжает выводиться тысячи раз) при каждой загрузке страницы (1 загрузка страницы → непрерывное многократное повторение лога из одного оператора в functions.php).
РЕДАКТИРОВАНИЕ: Проверка отключения WordPress Heartbeat Как было подсказано, я попробовал отключить WordPress Heartbeat, добавив в functions.php в начале код, который нашел в Google для отключения Heartbeat в WordPress (позже проверю, нужен ли он). Но все равно получаю эти сообщения лога многократно при одной загрузке страницы.
КОД ДЛЯ ОТКЛЮЧЕНИЯ HEARTBEAT, ДОБАВЛЕННЫЙ В functions.php:
add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
wp_deregister_script('heartbeat');
}
РЕДАКТИРОВАНИЕ: Проверка AJAX-запросов Как было подсказано, я отследил все сетевые запросы к моему серверу через инструменты разработчика Chrome...после полной загрузки страницы (загрузка страницы с get/post html + запросы ресурсов) нет сетевых запросов, то есть никаких AJAX-запросов к серверу после загрузки страницы.

Хорошо, насколько я понимаю, вы поместили этот код:
$debug_log = "DEBUG-журнал отладки";
trigger_error($debug_log);
//ИЛИ
error_log($debug_log);
непосредственно в ваш файл functions.php
.
Это означает, что этот код будет выполняться (и, соответственно, новая запись будет добавляться в файл журнала) каждый раз, когда загружается файл functions.php
— то есть при каждом запросе к вашему WordPress.
Это значит, что каждый раз, когда кто-то просматривает вашу страницу, будет добавляться новая запись в журнал.
Но... Это ещё не всё... Если вы вошли в систему, WordPress отправляет Heartbeat-запросы. Они также будут приводить к новым записям в журнале.
В вашем журнале не так много записей, добавленных в одно и то же время, поэтому, по моему мнению, маловероятно, что они выводятся в рамках одного запроса.
P.S. JavaScript не выполняется во время AJAX-запросов, поэтому вы не увидите их несколько раз.

Теперь я добавил кусок кода, который нашел в интернете, чтобы отключить Heartbeat в WordPress (позже проверю, нужен ли он) в functions.php в самом начале... но все равно получаю эти сообщения в логах несколько раз при загрузке одной страницы.

Я отследил сетевые запросы через инструменты разработчика Chrome к моему веб-серверу... после полной загрузки страницы (страница загружается с get/post html + запросами ресурсов) никаких сетевых вызовов нет.

Сэр, не могли бы вы сами попробовать вывести лог из functions.php в вашей доступной среде с чистой установкой WordPress и, как упоминалось в оригинальном вопросе, я действительно пробовал это и получил те же результаты даже с чистой установкой WordPress на реальном сервере. Так что я считаю, что с кодом/настройками пользователя всё в порядке.

@UtsavMadaan добавьте var_dump переменной $_SERVER в этот лог. Вы узнаете, какие запросы вызывают логирование.

Хорошо, я сделал это. Логи с представлением $_SERVER в виде строки выводятся гораздо реже по сравнению с тестовыми логами... Теперь выводится только 3-4 раза на запрос с дампом $_SERVER, где указаны источник запроса/URI, приходящие с фронтенд-страницы, cron и ajax. Не знаю, что делать.. Проанализирую это должным образом через несколько дней, так как у меня очень мало времени на проект, и обновлю здесь. В любом случае, спасибо.

Итак, вы сами ответили на свой вопрос - нет множественного логирования на один запрос. AJAX - это отдельный запрос (и, по-видимому, на вашей странице есть AJAX-вызов), а CRON - это тоже отдельный запрос (и WP выполняет некоторые CRON-запросы в фоновом режиме во время посещения страницы) - всё работает корректно и именно так, как должно.

Нет, сэр, проблема не решена, потому что логи становятся намного больше при записи просто случайного текста, как показано в исходном вопросе (записывается небольшой случайный текст, и он печатается много раз и продолжает печататься), я также не использую никакую внешнюю тему сейчас... разберусь с причиной через несколько дней и обновлю здесь... но это странно, когда я логирую $_SERVER, он логируется всего 4-5 раз за запрос.. но при случайном тексте он просто продолжает логироваться
