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

Ind*_*ial 19 php size storage memcached caching

  • 测量PHP对象实际大小(以字节/千字节为单位)的合适方法是什么?

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

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

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

非常感谢

irc*_*ell 31

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

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

  • 嗯,一切都取决于.如果你有mb_string函数重载,那你就有问题了.如果没有,`strlen`将返回字节长度(这是你想要的第一个).如果你有`mbstring.func_overload`,你可以使用`mb_strlen(serialize($ foo),'8bit');`代替strlen.但请注意,必须安装mb_string才能使用它.我将编辑一个更健壮的版本...... (2认同)