Domanda

Sto utilizzando il biblioteca twitter-asincrone per fare un po ' OAuth chiamate a Twitter, ma in ultima analisi, un sacco di memoria viene utilizzato su. Ho provato a fare funzionare la traccia di esecuzione xdebug e questo è dove mi sento la memoria è sempre trapelato.

json_decode() sta usando 47077232 byte. Va bene. Questo va bene.

Ma gettype()? Perché dovrebbe essere anche questo utilizza simile quantità di memoria?

Come poteva essere evitato?

Lo script viene eseguito in un ciclo e l'utilizzo della memoria continua a salire. Sto utilizzando gc_collect_cycles() al numero di posti e sta mostrando un miglioramento. Ma questo, non riesco a capire il motivo per cui questo accade.

  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
È stato utile?

Soluzione

documentazione :

Non utilizzare mai GetType () per testare per un certo tipo, dal momento che la stringa restituita può essere soggetto a modifiche in una versione futura. Inoltre, è troppo lento, in quanto si tratta di confronto di stringa.

Al contrario, utilizzare l'is_ * funzioni.

es. uso is_array, is_string etc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top