El mismo mensaje de registro se imprime miles de veces en el archivo debug.log

14 ene 2019, 01:45:48
Vistas: 755
Votos: 1

Estaba depurando mi código PHP mientras trabajaba en un sitio WordPress escribiendo en debug.log con error_log($mensaje) o trigger_error($mensaje).

Mi mensaje en estos registros sigue imprimiéndose miles de veces en el archivo debug.log desde una misma declaración en functions.php (a modo de ejemplo aquí estoy registrando desde el functions.php del tema lo que resulta en el mismo problema de múltiples impresiones aunque estaba depurando desde algún plugin de snippets).

Para verificar si este problema era causado por mi código en functions.php o por el plugin de snippets siendo llamado múltiples veces, intenté registrar con diferentes mecanismos [consola de chrome y alertas del navegador], el resultado fue que el mensaje de depuración de PHP se imprimió múltiples veces mientras que la consola de chrome y la alerta del navegador solo aparecieron una vez. Por lo tanto, creo que mi código no se está ejecutando múltiples veces pero los mensajes de registro de depuración impresos por error_log o trigger_error se imprimen múltiples veces y siguen imprimiéndose miles de veces.

Pensé que podría deberse a mi entorno de desarrollo local, así que probé lo mismo en una instalación fresca de WordPress en un entorno real, y ocurrió lo mismo. Hasta ahora no he encontrado solución/explicación.

MI ARCHIVO functions.php DEL TEMA CON TODO EL CÓDIGO PROBADO:

.
.
.
//continúa imprimiendo en debug.log (muchas veces)
$debug_log = "DEBUG-debug log";
trigger_error($debug_log);
//O
error_log($debug_log);

//imprime solo una vez en la consola de chrome
$debug_console = "DEBUG-console";
echo "<script>console.log('$debug_console');</script>";

//muestra alerta solo una vez en chrome
$debug_alert = "DEBUG-alert";
echo "<script type='text/javascript'>alert('$debug_alert');</script>";

MI ARCHIVO debug.log SE VE ASÍ:

[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

EDIT: Claridad en la pregunta Para ser claro, quiero decir que el registro se imprime múltiples veces (y sigue imprimiéndose miles de veces) cada vez que cargo una página (así que 1 carga de página -> múltiples registros repetidos continuamente desde una sola declaración de registro en functions.php)

EDIT: Verificado desactivando WordPress Heartbeat Como se sugirió, intenté desactivar WordPress Heartbeat añadiendo un fragmento de código que encontré en Google para deshabilitar Heartbeat en WordPress (lo revisaré más tarde si es necesario o no) en functions.php al principio...pero sigo obteniendo esos mensajes de registro múltiples veces en una sola carga de página.

CÓDIGO HEARTBEAT AÑADIDO A functions.php:

add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
    wp_deregister_script('heartbeat');
}

EDIT: Verificado llamadas AJAX Como se sugirió, monitoreé todas las llamadas de red a mi servidor a través de las opciones de desarrollador de chrome...no hay llamadas de red después de que una página se carga completamente (la página se carga con llamadas de red get/post html + assets) así que no hay solicitudes AJAX al servidor después de que la página se carga.

4
Comentarios

functions.php se ejecuta cada vez que alguien visita una página de tu sitio web. Así que sí, se registrará muchas veces.

Jacob Peattie Jacob Peattie
14 ene 2019 01:54:54

Lo siento, no fui muy claro... Me refiero a que cada vez que cargo la página, se imprime múltiples veces (y sigue imprimiendo miles de veces).

Utsav Madaan Utsav Madaan
14 ene 2019 09:21:07

¿Estás conectado?

Krzysiek Dróżdż Krzysiek Dróżdż
14 ene 2019 09:23:48

Sí, soy administrador del sitio, inicié sesión como administrador... y solo yo lo estoy usando a través del entorno de desarrollo local (local by flywheel)

Utsav Madaan Utsav Madaan
14 ene 2019 09:25:13
Todas las respuestas a la pregunta 1
10

OK, según lo que entiendo, has puesto este código:

$debug_log = "DEBUG-registro de depuración";
trigger_error($debug_log);
//O
error_log($debug_log);

directamente en tu archivo functions.php.

Esto significa que este código se ejecutará (por lo que se agregará un nuevo elemento al archivo de registro) cada vez que se cargue el archivo functions.php, es decir, durante cada solicitud a tu WordPress.

Esto significa que cada vez que alguien vea tu página, se agregará un nuevo elemento al registro.

Pero... eso no es todo... Si estás conectado, WordPress envía solicitudes de Heartbeat. Estas también generarán nuevos elementos en el registro.

No hay tantos elementos de registro registrados con la misma hora en tu archivo de logs, así que en mi opinión es poco probable que se impriman en la misma solicitud.

PD: JavaScript no se ejecuta durante las llamadas AJAX, por lo que no los verás múltiples veces.

14 ene 2019 09:29:09
Comentarios

Así que ahora he añadido un fragmento de código que encontré en internet para desactivar Heartbeat en WordPress (verificaré más tarde si es necesario o no) en functions.php al principio... pero sigo recibiendo esos mensajes de registro múltiples veces durante la carga de una sola página.

Utsav Madaan Utsav Madaan
14 ene 2019 09:41:02

¿Hay alguna solicitud AJAX en tu sitio?

Krzysiek Dróżdż Krzysiek Dróżdż
14 ene 2019 10:13:53

Así que monitoreé las llamadas de red a través de las opciones de desarrollador de Chrome hacia mi servidor web... no hay llamadas de red después de que una página se carga completamente (la página se carga con llamadas de red get/post html + assets)

Utsav Madaan Utsav Madaan
14 ene 2019 10:41:50

Señor, ¿puede intentarlo usted mismo imprimiendo el registro desde functions.php en su entorno disponible con una instalación nueva de WordPress? Como se mencionó en la pregunta original, realmente probé esto y obtuve los mismos resultados incluso con una instalación nueva de WordPress en un servidor real. Por lo tanto, creo que no hay nada malo con el código/configuración del usuario.

Utsav Madaan Utsav Madaan
14 ene 2019 10:45:17

¿Eres el único que está abriendo ese sitio?

Krzysiek Dróżdż Krzysiek Dróżdż
14 ene 2019 16:31:21

Sí, solo yo tengo acceso y visito el sitio

Utsav Madaan Utsav Madaan
14 ene 2019 17:44:28

@UtsavMadaan añade un var_dump de $_SERVER a ese registro. Sabrás qué solicitudes están causando los registros.

Krzysiek Dróżdż Krzysiek Dróżdż
14 ene 2019 17:46:05

Ok, así que hice eso. Los registros impresos con la representación de cadena de $_SERVER aparecieron muchas menos veces en comparación con los registros que imprimí para pruebas... ahora solo se imprimen 3-4 veces por solicitud con el volcado de $_SERVER, con el origen/URI de la solicitud proveniente de la página frontal, cron y ajax. No sé qué hacer... lo analizaré adecuadamente después de algunos días, ya que tengo muy poco tiempo para el proyecto y lo actualizaré aquí. Gracias de todos modos.

Utsav Madaan Utsav Madaan
15 ene 2019 08:56:47

Entonces has respondido tu propia pregunta: no hay múltiples registros por solicitud. AJAX es otra solicitud (y aparentemente hay una llamada AJAX en tu página) y CRON es otra solicitud (y WP hace algunas solicitudes CRON en segundo plano durante la visita a la página): todo está bien y exactamente como se supone que debe ser.

Krzysiek Dróżdż Krzysiek Dróżdż
15 ene 2019 09:04:29

No señor, el problema no está resuelto porque los registros son mucho más numerosos al registrar solo un texto aleatorio como se muestra en la pregunta original (se registró un pequeño texto aleatorio y se imprimió muchas veces y sigue imprimiéndose), tampoco estoy usando ningún tema externo por ahora...averiguaré la causa en algunos días y lo actualizaré aquí...pero es extraño cuando registro $_SERVER solo se registra 4-5 veces por solicitud...pero con texto aleatorio sigue registrando sin parar

Utsav Madaan Utsav Madaan
16 ene 2019 16:00:55
Mostrar los 5 comentarios restantes