gettype () утечка памяти - PullRequest
       5

gettype () утечка памяти

0 голосов
/ 14 января 2011

Я использую библиотеку twitter-async , чтобы сделать несколько вызовов oauth в твиттере, но, в конечном счете, много памяти израсходовано.Я попытался запустить трассировку выполнения xdebug, и именно здесь я чувствую утечку памяти.

json_decode() использует 47077232 байта.Хорошо.Это нормально.

Но gettype()?Почему это тоже должно использовать такой же объем памяти?

Как это можно предотвратить?

Скрипт работает в цикле, и использование памяти продолжает расти.Я использую gc_collect_cycles() в ряде мест, и это показывает улучшение.Но этот, я не могу понять, почему это должно произойти.

  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

1 Ответ

5 голосов
/ 14 января 2011

Из документации :

Никогда не используйте gettype () для проверки определенного типа, поскольку возвращаемая строка может быть изменена в будущей версии. Кроме того, он тоже медленный, так как включает сравнение строк.

Вместо этого используйте функции is_ *.

например. используйте is_array, is_string и т. д.

...