在我的项目中,我使用自己的框架,并确保使用自己的日志logging时间和内存。 现在我发现我的内存使用统计在不同的环境下有所不同。 这里我的意思是两个环境:本地Windows和生产VPS Fedora。
这里是logging器视图:
<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,但同样的要求,我有2976 KB的VPS Fedora。
我也testing了相同的test.php文件包含这个:
<?php $a = 999; $b = 999; $c = 999; echo memory_get_usage(); ?>
这就是我得到的:
本地机器(Windows): 329280生产机器(Fedora): 633392
eAccelerator或xCache可以影响这个统计数据吗? 或者我错了?
从PHP 5.2.x开始, memory_get_usage()函数有一个参数。
int memory_get_usage ([ bool $real_usage = false ] )
根据php.net, $ real_usage是:
将其设置为TRUE以获取从系统分配的实际内存大小。 如果未设置或仅为FALSE,则仅报告emalloc()使用的内存。
另外一些消息来源说PHP需要在Apache中作为CGI加载,以使用getmypid()正确获取进程ID的内存使用情况。
PHP在Linux中作为Apache的一部分运行,并在Windows中独立运行。 也许这可能意味着内存的差异?