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 远程图片保存到本地的函数类
Dec 08 PHP
PHP下打开URL地址的几种方法小结
May 16 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
Oct 06 PHP
PHP实现生成唯一编号(36进制的不重复编号)
Jul 01 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
php自定义错误处理用法实例
Mar 20 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
盘点PHP和ASP.NET的10大对比!
Dec 24 PHP
PHP怎样用正则抓取页面中的网址
Aug 09 PHP
PHP中常用的魔术方法
Apr 28 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
May 04 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 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
thinkphp数据查询和遍历数组实例
2014/11/28 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
可以支持多中格式的JS键盘
2007/05/02 Javascript
JavaScript 格式字符串的应用
2010/03/29 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
js中直接声明一个对象的方法
2014/08/10 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
微信小程序 九宫格实例代码
2017/01/21 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
2017/02/15 Javascript
Centos6.8下Node.js安装教程
2017/05/12 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
原生JS实现无缝轮播图片
2020/06/24 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
Python中的模块和包概念介绍
2015/04/13 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
python re正则匹配网页中图片url地址的方法
2018/12/20 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
pyhanlp安装介绍和简单应用
2019/02/22 Python
pandas如何处理缺失值
2019/07/31 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
Python 程序员必须掌握的日志记录
2020/08/17 Python
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
大学生作弊检讨书
2014/09/11 职场文书
销售工作决心书
2015/02/04 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis