设为首页 收藏本站
查看: 758|回复: 0

[经验分享] 用PHP函数memory_get_usage获取当前PHP内存消耗量以实现程序的...

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-4-8 09:49:20 | 显示全部楼层 |阅读模式
PHP性能优化过程中避免不了需要获取PHP内存消耗,使用memory_get_usage()函数可获取当前的内存消耗情况,函数使用简单,下面以示例的形式介绍下使用 memory_get_usage() 函数获取当前PHP内存消耗量的用法。

  一,函数原型

  int memory_get_usage ([ bool $real_usage=false ] )

  二,版本兼容

  PHP 4 >= 4.3.2,PHP 5

  三,基础用法与实例

  1,获取当前的内存消耗量

  查看代码打印1

  2echo memory_get_usage();

  3$var=str_repeat("www.yunvn.com",10000);

  4echo memory_get_usage();

  5unset($var);

  6echo memory_get_usage();

  7?>

  结果输出:62328 122504 62416

  说明:memory_get_usage() 函数输出的数值为 bytes 单位

  2,格式化 memory_get_usage() 结果以 KB 为单位输出

  查看代码打印1

  2function convert($size){

  3 $unit=array('b','kb','mb','gb','tb','pb');

  4 return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];

  5}

  6echo convert(memory_get_usage(true));

  7?>

  输出:256 kb

  3,自定义函数获取数组或变量值大小

  查看代码打印01

  02function array_size($arr){

  03 ob_start();

  04 print_r($arr);

  05 $mem=ob_get_contents();

  06 ob_end_clean();

  07 $mem=preg_replace("/\n +/","",$mem);

  08 $mem=strlen($mem);

  09 return $mem;

  10}

  11$memEstimate=array_size($GLOBALS);

  12?>

  可以看出,要想减少内存的占用,可以使用 PHP unset() 函数把不再需要使用的变量删除。类似的还有:PHP mysql_free_result() 函数,可以清空不再需要的查询数据库得到的结果集,这样也能得到更多可用内存。

  PHP memory_get_usage()还可以有个参数,$real_usage,其值为布尔值。默认为 FALSE,表示得到的内存使用量不包括该函数(PHP 内存管理器)占用的内存;当设置为 TRUE 时,得到的内存为包括该函数(PHP 内存管理器)占用的内存。

  所以在实际编程中,可以用PHP memory_get_usage()比较各个方法占用内存的高低,来选择使用哪种占用内存小的方法。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-16913-1-1.html 上篇帖子: php利用filter函数验证邮箱、url和ip地址的方法 下篇帖子: PHP对变量进行序列化的方法大比拼 php四种序列化变量的方法 消耗量 程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表