PHP: misura le size in kilobyte di un object / arrays?

  • Qual è un modo appropriato per misurare una dimensione effettiva degli oggetti PHP in byte / kilobyte?

Motivo per chiedere:
Sto utilizzando memcached per l'archiviazione nella cache della mia applicazione web che verrà utilizzata da clienti non tecnici. Tuttavia, dal momento che memcached ha una dimensione massima di 1mb , sarebbe fantastico avere una function impostata dall'inizio che possa essere usata per misurare la dimensione degli oggetti selezionati / arrays / set di dati, per evitare che diventino grandi.

Si noti che sto solo pianificando di utilizzare questo come strumento di avviso / diagnostica per tenere traccia delle performance della cache e delle possibilità di archiviazione nel tempo. Presumo che il calcolo della velocità su each serie di memcached / aggiunta di chiamata rallenti un po 'le cose.

Sono anche consapevole di archiviare grandi dataset in memcached e togliere l'intera idea di archiviare le cose nella RAM, ed è esattamente questo il motivo per cui ho bisogno di sapere in anticipo per impedire ai clienti di creare grandi dataset.

molte grazie

Bene, dal momento che Memcached non memorizza oggetti grezzi (in realtà memorizza la versione serialiezd), puoi farlo:

$serializedFoo = serialize($foo); if (function_exists('mb_strlen')) { $size = mb_strlen($serializedFoo, '8bit'); } else { $size = strlen($serializedFoo); } 

Un altro modo semplice di eseguire il pute del contenuto dell'arrays su file e quindi controllare la dimensione del file.

 $str = print_r($arrays, true); file_put_contents('data.txt', $str); $size = filesize('data.txt');