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 相关文章推荐
Windows下PHP5和Apache的安装与配置
Sep 05 PHP
php实现网站插件机制的方法
Nov 10 PHP
PHP爆绝对路径方法收集整理
Sep 17 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
Oct 25 PHP
PHP实现下载断点续传的方法
Nov 12 PHP
PHP上传文件时自动分配路径的方法
Jan 09 PHP
php两种无限分类方法实例
Apr 21 PHP
php支持断点续传、分块下载的类
May 02 PHP
分享PHP-pcntl 实现多进程代码
Sep 30 PHP
PHP memcache在微信公众平台的应用方法示例
Sep 13 PHP
PHP isset()及empty()用法区别详解
Aug 29 PHP
PHP时间类完整代码实例
Feb 26 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求最大子序列和的算法实现
2011/06/24 PHP
PHP基于单例模式实现的数据库操作基类
2016/01/15 PHP
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
IE的fireEvent方法概述及应用
2013/02/22 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
微信小程序 122100版本更新问题解决方案
2016/12/22 Javascript
初探nodeJS
2017/01/24 NodeJs
Angular2开发——组件规划篇
2017/03/28 Javascript
jQuery实现可拖动进度条实例代码
2017/06/21 jQuery
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
Vue基础学习之项目整合及优化
2019/06/02 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
[02:38]DOTA2亚洲邀请赛小组赛精彩集锦:Wings完美团击溃对手
2017/03/29 DOTA
python用来获得图片exif信息的库实例分析
2015/03/16 Python
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
python图片验证码生成代码
2016/07/02 Python
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
2017/05/24 Python
Python时间序列缺失值的处理方法(日期缺失填充)
2019/08/11 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
python缩进长度是否统一
2020/08/02 Python
C语言笔试题回忆
2015/04/02 面试题
《雕塑之美》教学反思
2014/04/24 职场文书
行政工作试用期自我评价
2014/09/14 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
参加招聘会后的感想
2015/08/10 职场文书
各种货币符号快捷输入
2022/02/17 杂记