在我的项目中,我使用自己的框架,并确保使用自己的记录时间和内存。现在我发现我的内存使用统计信息在不同环境中有所不同。这里我指的是两个环境:本地Windows和生产VPS Fedora。
以下是记录器视图:
<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>
一切都很好,除了这一行,它给出了不同之处:
<h4>Total used memory: <?php echo round(memory_get_usage() / 1024, 2); ?> KB</h4>
在Windows上,我有 598 KB,但对于同样的请求,我在VPS Fedora上有 2976 KB。
我也测试了包含此内容的相同test.php文件:
<?php
$a = 999;
$b = 999;
$c = 999;
echo memory_get_usage();
?>
这就是我得到的:
本地计算机(Windows): 329280 生产机器(Fedora): 633392
eAccelerator或xCache是否会影响此统计信息?或者我错了?
答案 0 :(得分:1)
从PHP 5.2.x开始,memory_get_usage()函数有一个参数。
int memory_get_usage ([ bool $real_usage = false ] )
根据php.net, $ real_usage 是:
将此值设置为TRUE以获取从系统分配的实际内存大小。如果未设置或FALSE,则仅报告emalloc()使用的内存。
另外some sources说PHP需要在Apache中作为CGI加载,以便使用getmypid()通过进程ID正确获取内存使用。
答案 1 :(得分:1)
php在linux中作为apache的一部分运行,在windows中独立运行。也许这可能意味着记忆的差异?