2011-01-14 7 views
0

私はtwitter-async libraryを使ってtwitterへのoauth呼び出しを行っていますが、最終的には多くのメモリが使い果たされています。私はxdebugの実行トレースを実行しようとしましたが、これはメモリが漏れていると感じるところです。gettype()メモリが漏れています

json_decode()は47077232バイトを使用しています。はい。これは問題ありません。

ただし、gettype()?なぜこれも同様の量のメモリを使用する必要がありますか?

これをどのように防止できますか?

スクリプトはループで実行され、メモリ使用量は増加し続けます。私は場所の数でgc_collect_cycles()を使用しており、改善を示しています。しかし、この1つは、私はなぜこれが起こるべきか理解できません。 documentationから

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

gettypeにメモリがリークしているかどうかわかりませんが、gettypeが地獄のように遅いことがわかりました。たぶんあなたはgettypeからis_ * –

+0

に移行することができますあなたは使用している正確なコマンドを表示できますか? –

+0

@ペッカあなたを得ることができませんでした。正確に何をしたいですか? – kapeels

答えて

5

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

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

is_arrayis_stringなど

+0

結果は同じですが、is_objectはメモリ使用量をまったく減らしません。 – kapeels

関連する問題