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

PHP:测量对象/数组的大小(以KB为单位)? 什么是合适的测量方法 PHP对象的实际大小为 字节/千字节,php,caching,size,memcached,storage,Php,Caching,Size,Memcached,Storage,询问原因: 我在我的web应用程序中使用memcached作为缓存存储,非技术客户将使用它。但是,由于memcached有一个函数,所以最好从一开始就设置一个函数,可以用来测量选定对象/数组/数据集的大小,以防止它们变大 请注意,我只打算将其用作一个警报/诊断工具,以跟踪缓存性能和存储可能性。我假设每个memcached set/add调用的计算速度都会降低一些速度 我还意识到,在memcached中存储大数据集会剥夺在RAM中存储东西的整个想法,这正是我需要事先知道的原因,以防止客户建立大数据

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

请注意,我只打算将其用作一个警报/诊断工具,以跟踪缓存性能和存储可能性。我假设每个memcached set/add调用的计算速度都会降低一些速度

我还意识到,在memcached中存储大数据集会剥夺在RAM中存储东西的整个想法,这正是我需要事先知道的原因,以防止客户建立大数据集


非常感谢,因为Memcached不存储原始对象(它实际上存储的是serialiezd版本),所以您可以这样做:

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

另一种简单的方法是将数组的内容放入文件,然后检查文件大小

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

你好这正是我要问的。它是如何处理UTF8和多字节字符的?嗯,这完全取决于。如果启用了mb_字符串函数重载,则会出现问题。否则,
strlen
将返回字节长度(这是您首先想要的)。如果启用了
mbstring.func_重载
,则可以使用
mb_strlen(serialize($foo),'8bit')代替strlen。但请注意,必须安装mb_字符串才能使用它。我将在一个更健壮的版本中编辑…非常感谢您的帮助!伟大的stuff@ircmaxell在剧本的第5行,你有一个太多的妄想症。(无法编辑,因为这么说编辑必须至少有6个字符)。什么?永远不要那样做!要找到一种比这更低效的方法将是一个挑战1.你敢这么做吗?见下面的官方手册页。您将找到“参数>变量”部分要存储的变量。字符串和整数按原样存储,其他>类型按序列化方式存储。