Frage

Ich bin mit der twitter-Asynchron-Bibliothek einige tun oauth Anrufe twittern, aber letztlich wird viel Speicher verbraucht wird. Ich habe versucht, die xdebug Execution Trace laufen und das ist, wo ich die Erinnerung fühlen geleckt zu werden.

json_decode() verwendet 47077232 bytes. Okay. Das ist in Ordnung.

Aber gettype()? Warum soll dies auch sein mit ähnlicher Speichermenge?

Wie dies verhindert werden könnte?

Das Skript läuft in einer Schleife und die Speichernutzung ständig nach oben. Ich verwende gc_collect_cycles() an Zahl der Plätze und es zeigt Verbesserungen. Aber diese eine, ich kann nicht verstehen, warum dies geschehen soll.

  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
War es hilfreich?

Lösung

Von der Dokumentation :

Verwenden Sie niemals gettype (), um Test für eine bestimmte Art, da der zurückgegebene String Thema in einer zukünftigen Version zu ändern sein. Darüber hinaus ist es langsam zu, da es String-Vergleich beinhaltet.

Verwenden Sie stattdessen die is_ * Funktionen.

z. Verwendung is_array, is_string etc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top