Question

J'utilise le bibliothèque twitter-async pour faire un peu OAuth appels à Twitter, mais en fin de compte, est utilisé beaucoup de mémoire vers le haut. Je courais la trace essayé d'exécution xdebug et c'est là où je sens la mémoire est une fuite.

json_decode() utilise 47077232 octets. D'accord. Ceci est très bien.

Mais gettype()? Pourquoi cela aussi être en utilisant la même quantité de mémoire?

Comment cela pourrait-il être évité?

Le script est exécuté dans une boucle et l'utilisation de la mémoire ne cesse d'augmenter. J'utilise gc_collect_cycles() au nombre de places et il montre une amélioration. Mais celui-ci, je ne peux pas comprendre pourquoi cela se produit.

  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
Était-ce utile?

La solution

De la documentation :

  

Ne jamais utiliser gettype () pour tester un certain type, étant donné que la chaîne retournée est sujette au changement dans une version future. De plus, il est trop lent, car il implique la comparaison de chaînes.

     

Au lieu de cela, utilisez le is_ *.

par exemple. utilisation is_array, is_string etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top