2013-06-01 2 views
2

PHP에서 변수의 크기를 알아 내려고하고 있습니다.PHP에서 메모리에있는 배열의 크기

내가 1mb 이상이면 memcache가 1MB의 한계가 있기 때문에 memcache가 아닌 다른 형태의 캐싱을 사용해야하기 때문에이 작업을 수행해야하는 이유가 있습니다.

것은 나는 아래 사용하고 있습니다 :

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

결과는 다시 매우 부정확 50메가바이트로오고있다. str 길이도 살펴 봤지만 데이터는 배열입니다. 누군가가 나를 PHP에서 변수의 크기를 감지하는 가장 정확한 방법을 알려주실 수 있습니까?

+0

이렇게 할 수있는 언어는 예외이며 PHP는 그 중 하나가 아닙니다. . 문제를 다르게 공격해야합니다. – Jon

답변

1

당신은 memcache에 당신의 크기에만 관심이있는 경우 자동으로

간단한 배열 또는 문자열 테스트

$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 

을 분할하기 위해 확장하는 간단한 클래스의 MultipartCache를 사용 할 수 있습니다 데이터 다음

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

이것은 내용이 1MB 미만의 여분의 오버 헤드 인 경우 디코딩 인코딩을 추측하지만 memcache를 사용하면 아무런 문제가 없습니다. multipartcache 훌륭한 클래스 그래도 매우 유용합니다. –