我正在制作一个小基准类来显示页面加载时间和内存使用情况。 加载时间已经开始工作了,但是当我显示内存使用情况时,它并没有改变 示例:
$conns = array();
ob_start();
benchmark::start();
$conns[] = mysql_connect('localhost', 'root', '');
benchmark::stop();
ob_flush();
使用相同的内存
$conns = array();
ob_start();
benchmark::start();
for($i = 0; $i < 1000; $i++)
{
$conns[] = mysql_connect('localhost', 'root', '');
}
benchmark::stop();
ob_flush();
我正在使用 memory_get_usage(true) 以字节为单位获取内存使用情况。
最佳答案
memory_get_usage(true)
将显示由 php 引擎分配的内存量,而不是脚本实际使用的内存量。很可能您的测试脚本不需要引擎请求更多内存。
为了测试,抓取一个大(大概)文件并将其读入内存。您应该会看到变化。
我已经成功地使用 memory_get_usage(true)
来跟踪网络爬虫脚本的内存使用情况,并且运行良好(因为目标是在达到系统内存限制之前减慢速度)。要记住的一件事是它不会根据实际使用情况而改变,它会根据引擎请求的内存而改变。 因此,您最终看到的是突然跳跃,而不是缓慢增长(或收缩)。
如果您将 real_usage
标志设置为 false,您可能会看到非常小的内存变化 - 但是,这无助于您监控真实的内存使用量内存 php 正在向系统请求。
(更新:为了清楚起见,我描述的区别在于脚本变量使用的内存与引擎请求运行的内存你的脚本。所有相同的脚本,不同的测量方式。)
关于php - 内存获取使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2409477/