询问原因:
我在我的Web应用程序中使用memcached进行缓存存储,非技术客户将使用它。但是,由于memcached具有maximum size of 1mb ,因此从一开始就设置一个函数可以用来测量所选对象/数组/数据集的大小,以防止它们变大。 / p>
请注意,我只打算将其用作警报/诊断工具,以便随时跟踪缓存性能和存储可能性。我假设在每个memcached set / add调用上计算速度会使某些事情变慢。
我也知道在memcached中存储大数据集会消除将内容存储在RAM中的全部想法,这正是我需要事先知道的原因,以防止客户构建大数据集。
非常感谢
答案 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');