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 相关文章推荐
mysql 性能的检查和优化方法
Jun 21 PHP
PHP转换文件夹下所有文件编码的实现代码
Jun 06 PHP
php获取目录所有文件并将结果保存到数组(实例)
Oct 25 PHP
析构函数与php的垃圾回收机制详解
Oct 28 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
Nov 01 PHP
php去掉文件前几行的方法
Jul 29 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
Apr 26 PHP
完美解决thinkphp唯一索引重复时出错的问题
Mar 31 PHP
php实现文件预览功能
May 23 PHP
PHP培训要多少钱
Jun 06 PHP
php封装单文件上传到数据库(路径)
Oct 15 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
Apr 20 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 编写的日历
2006/10/09 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
2010/10/22 PHP
PHP 读取大文件的X行到Y行内容的实现代码
2013/06/24 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
BootStrap扔进Django里的方法详解
2016/05/13 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
Python递归遍历列表及输出的实现方法
2015/05/19 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
2018/02/24 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
python三大神器之fabric使用教程
2019/06/10 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
python安装后的目录在哪里
2020/06/21 Python
python 读取.nii格式图像实例
2020/07/01 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
柏林通行证:Berlin Pass
2018/04/11 全球购物
日本卡普空电视游戏软件公司官方购物网站:e-CAPCOM
2018/07/17 全球购物
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
大学生活学习的自我评价
2013/12/03 职场文书
外贸英语专业求职信范文
2013/12/25 职场文书
拾金不昧表扬信范文
2014/01/11 职场文书
幼儿园安全检查制度
2014/01/30 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
22句经典语录:送给优柔寡断和胡思乱想的朋友们
2019/12/13 职场文书
Java 定时任务技术趋势简介
2022/05/04 Java/Android