php怎样获取变量所占内存?
Admin 2021-05-07 群英技术资讯 1247 次浏览
很多PHP新手可能还不太了解要如何查看一个变量占用内存,对此下面php获取变量所占内存大小的方法,分享给大家,有需要的朋友可以参考一下。
php版本为7.2
<?php
echo memory_get_usage() , '<br>';
$start = memory_get_usage();
$a = Array();
for ($i=0; $i<1000; $i++) {
$a[$i] = $i + $i;
}
$mid = memory_get_usage();
echo memory_get_usage() , '<br>';
for ($i=1000; $i<2000; $i++) {
$a[$i] = $i + $i;
}
$end = memory_get_usage();
echo memory_get_usage() , '<br>';
echo 'argv:', ($mid - $start)/1000 ,'bytes' , '<br>';
echo 'argv:',($end - $mid)/1000 ,'bytes' , '<br>';
echo 'Memory:', ($mid - $start)/1024 ,'k' , '<br>';
echo 'Memory:',($end - $mid)/1024 ,'k' , '<br>';
输出是:
389336
418056
442632
argv:28.72bytes
argv:24.576bytes
Memory:28.046875k
Memory:24k
返回当前分配给你的 PHP 脚本的内存量,单位是字节(byte)。大概了解1000个元素的整数数组需要占用 28k 内存,平均每个元素占用 28 个字节memory_get_usage() 返回的结果并不是全是被数组占用了,还要包括一些 PHP。运行本身分配的一些结构,可能用内置函数生成的数组更接近真实的空间:
<?php $start = memory_get_usage(); $a = array_fill(0, 10000, 1); $mid = memory_get_usage(); //10k elements array; echo 'argv:', ($mid - $start )/10000,'byte' , '<br>'; echo 'Memory:', ($mid - $start)/1024 ,'k' , '<br>'; $b = array_fill(0, 10000, 1); $end = memory_get_usage(); //10k elements array; echo 'argv:', ($end - $mid)/10000 ,'byte' , '<br>'; echo 'Memory:',($end - $mid)/1024 ,'k' , '<br>'; 得到: argv:54.5792byte argv:54.5784byte argv:39.736byte Memory:388.046875k argv:39.736byte Memory:388.046875k
大概了解10000个元素的整数数组需要占用 388k 内存 ,从这个结果来看似乎一个数组元素大约占用了39个字节左右。
内容补充:
php获取变量所占内存大小的方法
$start_memory = memory_get_usage(); $foo = "Some variable"; echo memory_get_usage() - $start_memory;
这个可以获取所有变量类型的大小,strlen($foo) 这个可以获取当前字符串的字节大小 除以8就是位大小。
对php获取变量所占内存的介绍就到这,希望对大家学习有一定的帮助,更多php获取变量所占内存内容大家可以继续关注其他文章。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文实例讲述了php 实现svg转化png格式的方法。分享给大家供大家参考,具体如下
建立一个websocket Worker,用来维持客户端长连接;在websocket Worker内部建立一个text Worker;开启一个内部端口,方便内部系统推送数据;通过workerman,向uid的页面推送数据;返回推送结果。
thinkphp中add()方法的返回值:1、“插入数据的ID”,当返回插入数据的ID时,表示该方法插入数据成功了;2、“false”,当返回false时,表示该方法插入数据失败了。
thinkphp和laravel是不一样的。thinkphp和laravel虽然都是PHP开发框架,但是有很多区别:1、渲染末班的方式不同,thinkphp用“$this->display()”的方式渲染模版,Laravel使用“return view()”方法;2、Laravel是一个重路由的框架,而thinkphp要有控制器方法才能正常访问。
php数组中重置索引:1、array_values 函数并不止重置数字索引还会将字符串键名也同样删除并重置。2、array_slice函数的功能是取出数组的中的一段,但它默认会重新排序并重置数组的数字索引。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008