0

私はtwitter-asyncライブラリを使用してtwitterへの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
4

1 に答える 1

5

ドキュメントから:

返される文字列は将来のバージョンで変更される可能性があるため、gettype()を使用して特定のタイプをテストしないでください。さらに、文字列の比較が含まれるため、速度も遅くなります。

代わりに、is_*関数を使用してください。

例:使用is_arrayなどis_string

于 2011-01-14T12:32:33.547 に答える