2012-01-14 2 views
2

내 프로젝트에서 필자는 자체 프레임 워크를 사용하고 있으며 필자는 자체 로깅 시간과 메모리를 사용합니다. 지금 나는 다른 환경에서 나의 메모리 사용 통계가 다른 것을 발견했다. 여기서 두 가지 환경을 의미합니다 : 로컬 Windows 및 프로덕션 VPS Fedora.로컬 (Windows) 및 VPS (Fedora)에서의 PHP 메모리 사용량 차이

<style> 
    div.lt-timer { 
     opacity: 0.5; background: #FFF; color: #777; border-radius: 5px; border: 1px solid #CCC; 
     font-size: 0.85em; position: fixed; max-width: 300px; max-height: 600px; overflow: auto; 
     bottom: 10px; right: 10px; padding: 5px; 
    } 
    div.lt-timer h4 { text-align: center; font-weight: 700; } 
</style> 
<div class="lt-timer"> 
    <h4><?php echo $timer->getName(); ?></h4> 
    <?php echo nl2br(implode('', $timer->getPoints())); ?> 
    <h4>Total used memory: <?php echo round(memory_get_usage()/1024, 2); ?> KB</h4> 
</div> 

모든이 줄을 제외하고 괜찮 차이를 제공합니다 : 여기

는 로거이다 Windows에서

<h4>Total used memory: <?php echo round(memory_get_usage()/1024, 2); ?> KB</h4> 

내가 약 598킬로바이트있어,하지만에 대한 VPS Fedora의 KB와 동일한 요청입니다.

나는이 포함 된 동일한 test.php 파일을 테스트 한 것 :

<?php 
    $a = 999; 
    $b = 999; 
    $c = 999; 

    echo memory_get_usage(); 
?> 

을 그리고 그게 내가 가진 무엇 :

에 로컬 시스템 (윈도우) : 329280 생산 기계 (페도라) :

eAccelerator 또는 xCache가이 통계에 영향을 미칠 수 있습니까? 아니면 내가 틀렸어?

+3

여기에 ** 톤 ** 변수가 있으며, 그 중 최소한이 코드입니다. – Brad

+0

완전히 다른 두 시스템은 서로 다른 메모리 사용 패턴을 나타냅니다. 거기 진짜 놀람 없음 ... – deceze

+0

6 시간 더 많은 것 .... 그것은 진짜로 의외이다 ... – devdRew

답변

1

PHP 5.2.x부터 memory_get_usage() 함수에는 매개 변수가 있습니다. php.net에 따르면

int memory_get_usage ([ bool $real_usage = false ]) 

, $ real_usage은 다음과 같습니다 TRUE로

설정이 시스템에서 할당 된 메모리의 실제 크기를 얻을 수 있습니다. 설정되지 않았거나 거짓 인 경우 emalloc()이 사용하는 메모리 만보고됩니다.

는 또한 some sources는 PHP가) (getmypid 사용하여 정확하게 프로세스 ID 메모리 사용량을 얻을 아파치에서 CGI로로드 될 필요가 말한다.

+0

그 결과는 같지만 차이는 크지 않습니다 :'524288' /'786432' – devdRew

+0

PHP를 CGI로로드하려고합니다 ... 감사합니다. – devdRew

1

PHP는 리눅스에서 아파치로, 그리고 윈도우에서는 독립 실행 형으로 실행됩니다. 어쩌면 그것은 기억의 차이를 의미 할 수 있습니까?