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安装攻略:常见问题解答(二)
Oct 09 PHP
PHP 冒泡排序算法的实现代码
Aug 08 PHP
一个简洁的PHP可逆加密函数(分享)
Jun 06 PHP
编写php应用程序实现摘要式身份验证的方法详解
Jun 08 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
Nov 14 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
May 08 PHP
PHP实现简单搜歌的方法
Jul 28 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
Sep 01 PHP
PHP实现QQ快速登录的方法
Sep 28 PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 PHP
详解在YII2框架中使用UEditor编辑器发布文章
Nov 02 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 HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
2015/04/15 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
PHP如何通过date() 函数格式化显示时间
2020/11/13 PHP
预加载css或javascript的js代码
2010/04/23 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
js console.log打印对像与数组用法详解
2016/01/21 Javascript
react.js使用webpack搭配环境的入门教程
2017/08/14 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
2019/01/22 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
jquery将信息遍历到界面上实例代码
2020/01/21 jQuery
简单了解Vue computed属性及watch区别
2020/07/10 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
机器学习10大经典算法详解
2017/12/07 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
对Python中type打开文件的方式介绍
2018/04/28 Python
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
现代家居用品及礼品:LBC Modern
2018/06/24 全球购物
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
2014年幼儿园安全工作总结
2014/11/10 职场文书
员工年度工作总结2015
2015/05/18 职场文书
傅雷家书读书笔记
2015/06/29 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
mysql函数之截取字符串的实现
2022/08/14 MySQL