Actualmente tengo una secuencia de comandos CLI de PHP que usa Zend Framework extensivamente, que parece estar usando una cantidad de memoria cada vez mayor a medida que se ejecuta. Pasa por un gran conjunto de modelos recuperados de una base de datos en lotes de 1000. Las llamadas al memory_get_usage()
muestran que el uso de la memoria del script siempre está aumentando.¿Hay alguna manera de obtener el tamaño de una variable de PHP en bytes?
Esto a pesar de estar seguro de que estoy desarmando el modelo después de cada iteración y en realidad usando array_shift()
para reducir el tamaño de la matriz de modelos en cada iteración.
Mi pregunta es, ¿en PHP hay alguna manera de descubrir el tamaño en la memoria de una variable para poder seguir lo que está creciendo?
Hay un [duplicado] (http://stackoverflow.com/questions/1075419/how-to-find-memory-used-by-an-object-in-php-sizeof) pero estoy no estoy contento con la respuesta aceptada allí (aunque la solución puede ser la única) así que no vota para cerrar y +1 –
Esta es una pregunta con la que he luchado por un tiempo. Es posible usar xDebug para perfilar una aplicación, pero no dice nada sobre el uso de memoria. En lugar de llamar memory_get_usage en ciertos puntos, nunca encontré una solución. –
Tuve una búsqueda de duplicados, pero todo lo que obtuve fue una página llena de errores de memoria, aunque es una pena. La razón por la que acepté esa respuesta en particular fue porque básicamente confirmó lo que literalmente acabamos de descubrir, no hay forma real de descubrir el tamaño de una variable y, al menos parte de la razón por la que estaba masticando memoria era debido a la mala recolección de basura. Veo su punto, sin embargo. – EntityDigital