gettype () Memoria de fugas
-
11-10-2019 - |
Pregunta
Estoy usando la biblioteca href="http://www.jaisenmathai.com/articles/twitter-async-documentation.html" rel="nofollow"> twitter-asíncrono para hacer algunas oauth llamadas a Twitter, pero en última instancia, una gran cantidad de memoria se están agotando. Intenté funcionar la traza de ejecución Xdebug y aquí es donde me siento la memoria se está filtró.
json_decode()
está utilizando 47077232 bytes. Bueno. Esto está muy bien.
Pero gettype()
? ¿Por qué debe ser esto también usando la misma cantidad de memoria?
¿Cómo pudo ser prevenida?
El script se ejecuta en un bucle y el uso de la memoria sigue subiendo. Estoy usando gc_collect_cycles()
en el número de plazas y que muestra una evolución positiva. Pero éste, no puedo entender por qué debería suceder esto.
724.1772 47077232 +2118720 -> json_decode() /var/www/html/includes/classes/twitter/EpiTwitter.php:230
724.1926 49157104 +2079872 -> gettype() /var/www/html/includes/classes/twitter/EpiTwitter.php:232
724.1927 49157104 +0 -> property_exists() /var/www/html/includes/classes/twitter/EpiTwitter.php:240
724.1927 49153520 -3584 -> EpiTwitterJson->__destruct() /var/www/html/includes/classes/twitter/EpiTwitter.php:0
724.1949 46714808 -2438712 -> in_array() /var/www/html/cron.php:156
Solución
Desde el documentación :
Nunca uso gettype () a prueba para un determinado tipo, ya que la cadena devuelta puede estar sujeto a cambio en una versión futura. Además, es demasiado lento, ya que implica la comparación de cadenas.
En su lugar, utilice el is_ *.
por ejemplo. is_array
uso, is_string
etc.