質問

私は使用しています 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
役に立ちましたか?

解決

から ドキュメンテーション:

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

代わりに、IS_*関数を使用します。

例:使用 is_array, is_string

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top