本地(Windows)和VPS(Fedora)上的PHP内存使用差异

时间:2012-01-14 23:18:49

标签: php linux windows memory-management

在我的项目中,我使用自己的框架,并确保使用自己的记录时间和内存。现在我发现我的内存使用统计信息在不同环境中有所不同。这里我指的是两个环境:本地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是​​否会影响此统计信息?或者我错了?

2 个答案:

答案 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中独立运行。也许这可能意味着记忆的差异?