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 存取 MySQL 数据库的一个例子
Oct 09 PHP
php5.2时间相差8小时
Jan 15 PHP
PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
Feb 15 PHP
PHP 异步执行方法,模拟多线程的应用分析
Jun 03 PHP
一个简单的PHP验证码实现代码
May 10 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
php修改上传图片尺寸的方法
Apr 14 PHP
PHP数组操作――获取数组最后一个值的方法
Apr 14 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
Jul 01 PHP
PHP引用返回用法示例
May 28 PHP
验证坐标在某坐标区域内php代码
Oct 08 PHP
Laravel学习基础之migrate的使用教程
Oct 11 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
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
php中定时计划任务的实现原理
2013/01/08 PHP
PHP多个文件上传到服务器实例
2014/10/29 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
js当一个变量为函数时 应该注意的一点细节小结
2011/12/29 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
jQuery.each使用详解
2015/07/07 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
jQuery的ajax下载blob文件
2016/07/21 Javascript
基于jQuery的checkbox全选问题分析
2016/11/18 Javascript
jquery Ajax实现Select动态添加数据
2017/06/08 jQuery
JavaScript标准对象_动力节点Java学院整理
2017/06/27 Javascript
详解Angular5 服务端渲染实战
2018/01/04 Javascript
bootstrap+jquery项目引入文件报错的解决方法
2018/01/22 jQuery
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
解决angularJS中input标签的ng-change事件无效问题
2018/09/13 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
python用来获得图片exif信息的库实例分析
2015/03/16 Python
Python下使用Psyco模块优化运行速度
2015/04/05 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
销售自荐信
2013/10/22 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
会员卡清退活动总结
2014/08/27 职场文书
批评与自我批评发言稿
2014/10/15 职场文书
2014年司机工作总结
2014/11/21 职场文书
2015年评职称个人工作总结
2015/10/15 职场文书
党员公开承诺书(2016最新版)
2016/03/24 职场文书
MySQL创建索引需要了解的
2021/04/08 MySQL
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技