php caching size memcached storage

PHP: ¿Tamaño de la medida en kilobytes de un objeto/matriz?



caching size (2)

  • ¿Cuál es una forma adecuada de medir el tamaño real de un objeto PHP en bytes / kilobytes?

Razón para preguntar:
Estoy utilizando memcached para el almacenamiento en caché en mi aplicación web que será utilizada por clientes no técnicos. Sin embargo, dado que memcached tiene un tamaño máximo de 1 mb , sería genial tener una función configurada desde el principio que pueda usarse para medir el tamaño de los objetos / arrays / conjuntos de datos seleccionados, para evitar que crezcan a lo grande.

Tenga en cuenta que solo planeo usar esto como una herramienta de alerta / diagnóstico para realizar un seguimiento del rendimiento del caché y las posibilidades de almacenamiento a lo largo del tiempo. Supongo que la velocidad de cálculo en cada conjunto de memcached / add call ralentizaría un poco las cosas.

También soy consciente de que almacenar grandes conjuntos de datos en memcached elimina toda la idea de almacenar cosas en la RAM, y esa es la razón por la que necesito saberlo de antemano para evitar que los clientes acumulen grandes conjuntos de datos.

Muchas gracias


Bueno, dado que Memcached no almacena objetos en bruto (en realidad almacena la versión serialiezd), puede hacer esto:

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


Otra manera fácil de cambiar el contenido de la matriz a archivar y luego verificar el tamaño del archivo.

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