2011-11-21 5 views
6

Tengo un script PHP bastante grande que está perdiendo memoria. Pude averiguar qué objeto está goteando, pero no he podido averiguar en qué parte del script se está filtrando. Algunas partes de mi script mantienen una referencia al objeto que gotea.Depuración de la pérdida de memoria PHP. ¿Seguir el conteo de referencia?

¿Hay alguna manera de que pueda rastrear (y preferiblemente rastrear) donde/cuando un objeto PHP tiene su recuento de referencia aumentado o disminuido?

Respuesta

2

Puede utilizar las herramientas de perfilado para averiguar lo que se escapa de su memoria prefiero http://xdebug.org/ y http://code.google.com/p/webgrind

http://derickrethans.nl/xdebug-and-tracing-memory-usage.html

+1

Gracias. Soy familliar con XDebug y el seguimiento de funciones. ¿Pero sabes cómo puedo usarlo para rastrear desde dónde se hace referencia a mi objeto filtrado en mi código? –

+0

puede intentar rastrear con webgrind le mostrará todas sus funciones invocadas-métodos, no mostrará el uso de la memoria, pero creo que puede rastrearlas por tiempo usado-uso –

1

intenta utilizar:

Además, sugiero que se escriba el código de una manera fácil de depurar y separar los procedimientos de depuración del código.

+0

Ya he usado XDdebug para averiguar qué objeto se está escapando . Lo que quiero saber ahora es dónde está goteando? Es decir. donde en mi código se guardan referencias a ese objeto? ¿Se puede usar XDebug para eso? –

+0

¿Cómo se utilizaron los puntos de interrupción para localizar dónde se está filtrando el objeto? Difícil de encontrar con una solución "general". –

+1

De ahí mi pregunta. Tenía la esperanza de que hubiera algún tipo de forma de rastrear o activar cuando Zend Engine incremente o disminuya el recuento de referencias internas de un objeto. –

Cuestiones relacionadas