PHP:测量对象/数组的千字节大小?

时间:2010-06-18 19:14:34

标签: php caching size memcached storage

  • 什么是适当的衡量方法 一个PHP对象的实际大小 字节/千字节?

询问原因:
我在我的Web应用程序中使用memcached进行缓存存储,非技术客户将使用它。但是,由于memcached具有maximum size of 1mb ,因此从一开始就设置一个函数可以用来测量所选对象/数组/数据集的大小,以防止它们变大。 / p>

请注意,我只打算将其用作警报/诊断工具,以便随时跟踪缓存性能和存储可能性。我假设在每个memcached set / add调用上计算速度会使某些事情变慢。

我也知道在memcached中存储大数据集会消除将内容存储在RAM中的全部想法,这正是我需要事先知道的原因,以防止客户构建大数据集。

非常感谢

2 个答案:

答案 0 :(得分:31)

好吧,既然Memcached不存储原始对象(它实际上存储了serialiezd版本),你可以这样做:

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

答案 1 :(得分:2)

另一种简单方法是将数组内容转换为文件,然后检查文件大小。

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