PHP内存使用情况如何获取


Posted in PHP onOctober 10, 2015

PHP内置函数memory_get_usage()能返回当前分配给PHP脚本的内存量,单位是字节(byte)。在WEB实际开发中,这些函数非常有用,我们可以使用它来调试PHP代码性能。
memory_get_usage()函数返回内存使用量,memory_get_peak_usage()函数返回内存使用峰值,getrusage()返回CUP使用情况。但有一点请注意,在这些函数需要在Linux上运行。
下面我们来看一个实例:

echo '开始内存:'.memory_get_usage(), ''; 
$tmp = str_repeat('hello', 1000); 
echo '运行后内存:'.memory_get_usage(), ''; 
unset($tmp); 
echo '回到正常内存:'.memory_get_usage();

输出结果:
开始内存:147296
运行后内存:152456
回到正常内存:147296

例子中,我们使用str_repeat()将字符串“hello”重复了1000遍,最终来对比前后消耗的内存大小。由上面的例子可以看出,要想减少内存的占用,可以使用unset() 函数把不再需要使用的变量删除。类似还有mysql_free_result() 函数,当我们不再需要查询数据得到的结果集时,可以使用释放查询占用的内存。
函数memory_get_usage()还可以有个参数,$real_usage,其值为布尔值。如果设置为 TRUE,获取系统分配的真实内存尺寸。如果未设置或者设置为 FALSE,将是 emalloc() 报告使用的内存量。
在实际WEB开发中,可以用PHP memory_get_usage()比较各个方法占用内存的高低,来选择使用哪种占用内存小的方法。
函数memory_get_usage()返回的字节数(单位为 byte(s))。

下面这个自定义函数将字节数转换成MB更容易阅读:

function memory_usage() { 
 $memory  = ( ! function_exists('memory_get_usage')) ? '0' : round(memory_get_usage()/1024/1024, 2).'MB'; 
 return $memory; 
}

常用的调试检测PHP代码性能的方法有:
memory_get_usage可以分析内存占用空间。
用microtime函数就可以分析程序执行时间。

通过这篇文章大家知道php是如何获取内存使用情况了吧,希望这篇文章能够对大家的学习有所帮助。

PHP 相关文章推荐
php include的妙用,实现路径加密
Jul 29 PHP
解析htaccess伪静态的规则
Jun 18 PHP
web server使用php生成web页面的三种方法总结
Oct 28 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
Nov 28 PHP
一个php短网址的生成代码(仿微博短网址)
May 07 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
Jun 25 PHP
PHP实现取得HTTP请求的原文
Aug 18 PHP
php实现通用的从数据库表读取数据到数组的函数实例
Mar 21 PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 PHP
PHP的APC模块实现上传进度条
Oct 27 PHP
Symfony控制层深入详解
Mar 17 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
PHP中Session和Cookie是如何操作的
Oct 10 #PHP
PHP中JSON的应用技巧
Oct 10 #PHP
PHP的serialize序列化数据以及JSON格式化数据分析
Oct 10 #PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 #PHP
php中删除、清空session的方式总结
Oct 09 #PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
Oct 09 #PHP
PHP中Closure类的使用方法及详解
Oct 09 #PHP
You might like
递归列出所有文件和目录
2006/10/09 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
关于JS中的闭包浅谈
2013/08/23 Javascript
jquery和ajax的关系详细介绍
2013/11/29 Javascript
Bootstrap基本样式学习笔记之按钮(4)
2016/12/07 Javascript
javascript中this关键字详解
2016/12/12 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
2017/07/08 jQuery
jQuery实现可编辑表格并生成json结果(实例代码)
2017/07/19 jQuery
React应用中使用Bootstrap的方法
2017/08/15 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
2019/05/21 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
python获得图片base64编码示例
2014/01/16 Python
Python中定时任务框架APScheduler的快速入门指南
2017/07/06 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
pandas通过索引进行排序的示例
2018/11/16 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
python中property和setter装饰器用法
2019/12/19 Python
python三引号如何输入
2020/07/06 Python
python matplotlib库的基本使用
2020/09/23 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
俄罗斯隐形眼镜和眼镜在线商店:Cronos
2020/06/02 全球购物
竞聘上岗演讲稿范文
2014/01/10 职场文书
班级活动策划书
2014/02/06 职场文书
党的群众路线教育实践活动督导组工作情况汇报
2014/10/28 职场文书
党员先进事迹材料
2014/12/19 职场文书
师德先进个人事迹材料
2014/12/19 职场文书
市场总监岗位职责
2015/02/11 职场文书
学习党章心得体会2016
2016/01/15 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers