php中内存中数组的大小

时间:2013-06-01 18:18:33

标签: php memory

我试图弄清楚php中变量的大小。

我需要这样做的原因是因为如果它超过1mb我需要使用不同形式的缓存而不是memcache,因为memcache的限制为1mb。

我正在使用以下内容:

 $start_memory = memory_get_usage();
 $this->results= $dataReader->readAll();
 $this->end_memory = memory_get_usage() - $start_memory;

结果以50mb回归,这是非常不准确的。我也查看了str长度,但数据是一个数组。有人能让我知道在php中检测变量大小的最准确方法。

1 个答案:

答案 0 :(得分:2)

你可以使用MultipartCache这是一个扩展内存缓存的简单类,可以帮助你自动拆分数组或字符串

简单测试

$cache = new Mcache\Main();
$cache->addserver("127.0.0.1");  // Local memecache server

$cache->set($key, file_get_contents("large_image.jpg"));

header("Content-Type: image/jpeg");
echo $cache->get($key); // large image for cache 

如果您只对数据的大小感兴趣,那么

$data = serialize($this->results);
echo strlen($data) . " bytes";