PHP内存使用情况如何java获取内存情况

Windows下 PHP怎么获取CPU和存储空间使用率。。。。急
按时间排序
参考如下:获取服务器性能CPU、内存、硬盘等使用率
get_used_status.php&?php
include(&conn.php&); $obj_MyConnect = new MyConnect(); $obj_MyConnect -& connect(DB_SERVER,DB_USER,DB_PWD,DB_NMAE);
function get_used_status(){
$fp = popen('top -b -n 2 | grep -E &^(Cpu|Mem|Tasks)&',&r&);//获取某一时刻系统cpu和内存使用情况
while(!feof($fp)){
$rs .= fread($fp,1024);
pclose($fp);
$sys_info = explode(&\n&,$rs);
$tast_info = explode(&,&,$sys_info[3]);//进程 数组
$cpu_info = explode(&,&,$sys_info[4]);
//CPU占有量
$mem_info = explode(&,&,$sys_info[5]); //内存占有量 数组
//正在运行的进程数
$tast_running = trim(trim($tast_info[1],'running'));
//CPU占有量
$cpu_usage = trim(trim($cpu_info[0],'Cpu(s): '),'%us');
//百分比
//内存占有量
$mem_total = trim(trim($mem_info[0],'Mem: '),'k total');
$mem_used = trim($mem_info[1],'k used');
$mem_usage = round(100*intval($mem_used)/intval($mem_total),2);
//百分比
$fp = popen('df -lh | grep -E &^(/)&',&r&);
$rs = fread($fp,1024);
pclose($fp);
$rs = preg_replace(&/\s{2,}/&,' ',$rs);
//把多个空格换成 “_”
$hd = explode(& &,$rs);
$hd_avail = trim($hd[3],'G'); //磁盘可用空间大小 单位G
$hd_usage = trim($hd[4],'%'); //挂载点 百分比
//print_r($hd);
//检测时间
$fp = popen(&date +&%Y-%m-%d %H:%M&&,&r&);
$rs = fread($fp,1024);
pclose($fp);
$detection_time = trim($rs);
电脑的话,右击任务栏——启动任务管理器
php 100 里面有个php探针
第一步,创建性能监视器对象:PerformanceCounter _oPerformanceCounter=new PerformanceCounter(&Processor&,&% Processor Time&,&_Total&);第二步,获取CPU使用情况:float _nVal=_oPerformanceCounter.NextValue();_nVal中就是当前CPU的使用率了,加上百分号(%)就是使用率的百分比,比如:string _s=&当前CPU使用率:& + nVal.ToString(&0.0&) + &%&;Process
Process.GetProcesses();
for(i=0;i&pro.Li++)
total=temp.PrivateMemorySize
获得内存的占用大小
请参阅vSphere Command-Line Interface手册,和vsphere4-performance-troubleshooting,网上可以找到,我也可以发给你。
&?php $str = shell_exec('more /proc/stat'); $pattern = &/(cpu[0-9]?)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)/&; preg_match_all($pattern, $str, $out); echo &共有&.count($out[1]).&个CPU,每个CPU利用率如下:&br&&; for($n=0;$n&count($out[1]);$n++) { echo $out[1][$n].&=&.(100*($out[1][$n]+$out[2][$n]+$out[3][$n])/($out[4][$n]+$out[5][$n]+$out[6][$n]+$out[7][$n])).&%&br&&; } ?& ////////////////////////////////////////////////////////////////////// &?php $str = shell_exec('more /proc/meminfo'); $pattern = &/(.+):\s*([0-9]+)/&; preg_match_all($pattern, $str, $out); echo &物理内存总量:&.$out[2][0].&&br&&; echo &已使用的内存:&.$out[2][1].&&br&&; echo &-----------------------------------------&br&&; echo &内存使用率:&.(100*($out[2][0]-$out[2][1])/$out[2][0]).&%&br&&; ?&//////////////////////////////////////////////////////////////////////&?php$str = shell_exec('more /proc/net/dev');$pattern = &/(eth[0-9]+):\s*([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)/&;preg_match_all($pattern, $str, $out); echo &共有&.count($out[1]).&个网络接口,每个网络接口利用率如下:&br&&; for($n=0;$n&count($out[1]);$n++) { echo $out[1][$n].&:收到 &.$out[3][$n].& 个数据包,发送 &.$out[11][$n].& 个数据包&br&&; } ?&
上csdn里一大把。
感谢您为社区的和谐贡献力量请选择举报类型
经过核实后将会做出处理感谢您为社区和谐做出贡献
确定要取消此次报名,退出该活动?
请输入私信内容:您的位置: >
> 阅读资讯:获取PHP内存使用情况的方法技巧
获取PHP内存使用情况的方法技巧
获取PHP内存使用情况的方法技巧
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()/, 2).'MB';
常用的调试检测PHP代码性能的方法有:
memory_get_usage可以分析内存占用空间。
用microtime函数就可以分析程序执行时间。
通过这篇文章大家知道php是如何获取内存使用情况了吧,希望这篇文章能够对大家的学习有所帮助。
本文地址:
相关文章列表如何获得一个php变量储存在内存中占用的空间大小_百度知道
如何获得一个php变量储存在内存中占用的空间大小
我有更好的答案
  我们在前面的php高效写法提到,尽量不要复制变量,特别是数组。一般来说,PHP数组的内存利用率只有 1/10, 也就是说,一个在C语言里面100M 内存的数组,在PHP里面就要1G。下面我们可以粗略的估算PHP数组占用内存的大小,首先我们测试1000个元素的整数占用的内存:  [php] view plain copy print?  &?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&';输出是:  353352  437848  522024  argv:84.416bytes  argv:84.176bytes  大概了解1000  个元素的整数数组需要占用 82k 内存,平均每个元素占用 84 个字节。而纯 C 中整体只需要 4k(一个整型占用4byte * 1000)。memory_get_usage() 返回的结果并不是全是被数组占用了,还要包括一些 PHP运行本身分配的一些结构,可能用内置函数生成的数组更接近真实的空间:  [php] view plain copy print?  &?php  $start = memory_get_usage();  $a = array_fill(0, 10000, 1);  $mid = memory_get_usage(); //10echo 'argv:', ($mid - $start )/10000,'byte' , '&br&';$b = array_fill(0, 10000, 1);  $end = memory_get_usage(); //10echo 'argv:', ($end - $mid)/10000 ,'byte' , '&br&';得到:  argv:54.5792byte  argv:54.5784byte  从这个结果来看似乎一个数组元素大约占用了54个字节左右。  首先看一下32位机C语言各种类型占用的字节:  [cpp] view plain copy print?  #include &stdafx.h&  //#include &stdio.h&  int main() {  printf(&int:%d\nlong:%d\ndouble:%d\nchar*:%d\nsize_t:%d\n&,sizeof(int), sizeof(long),  sizeof(double), sizeof(char *),  sizeof(size_t));  return
0;  }  int:4  long:4  double:8  har*:4  size_t:4  在PHP中都使用long类型来代表数字,没有使用int类型大家都明白PHP是一种弱类型的语言,它不会去区分变量的类型,没有int float char *之类的概念。  我们看看php在zend里面存储的变量,PHP中每个变量都有对应的 zval, Zval结构体定义在Zend/zend.h里面,其结构:  [cpp] view plain copy print?  typedef struct _zval_  struct _zval_struct {  /* Variable information */  zvalue_
/* The value 1 12字节(32位机是12,64位机需要8+4+4=16) */zend_uint refcount__ /* The number of references to this value (for GC) 4字节 */zend_
/* The active type 1字节*/zend_uchar is_ref__
/* Whether this value is a reference (&) 1字节*/};  PHP使用一种UNION结构来存储变量的值,即zvalue_value 是一个union,UNION变量所占用的内存是由最大成员数据空间决定。  [cpp] view plain copy print?  typedef union _zvalue_value {  
/* long value */
/* double value */struct {
/* string value */char *    }  HashTable *
/* hash table value */zend_object_
/*object value */} zvalue_  最大成员数据空间是struct str,指针占*val用4字节,INT占用4字节,共8字节。  struct zval占用的空间为8+4+1+1 = 14字节,其实呢,在zval中数组,字符串和对象还需要另外的存储结构,数组则是一个 HashTable:  HashTable结构体定义在Zend/zend_hash.h.  [cpp] view plain copy print?  typedef struct _hashtable {  uint nTableS//4  uint nTableM//4  uint nNumOfE//4  ulong nNextFreeE//4  Bucket *pInternalP
/* Used for element traversal 4*/Bucket *pListH//4  Bucket *pListT//4  Bucket **arB//4  dtor_func_t pD//4  zend_//1  unsigned char nApplyC//1  zend_bool bApplyP//1  #if ZEND_DEBUG  //4  #endif  } HashT  HashTable 结构需要 39 个字节,每个数组元素存储在 Bucket 结构中:  [cpp] view plain copy print?  typedef struct bucket {  
/* Used for numeric indexing
4字节 */uint nKeyL
/* The length of the key (for string keys)
4字节 */void *pD
/* 4字节*/  void *pDataP
/* 4字节*/  struct bucket *pListN
/* PHP arrays are ordered. This gives the next element in that order4字节*/struct bucket *pListL
/* and this gives the previous element
4字节 */struct bucket *pN
/* The next element in this (doubly) linked list
4字节*/struct bucket *pL
/* The previous element in this (doubly) linked list
4字节*/char arKey[1];
/* Must be last element
1字节*/} B  Bucket  结构需要 33 个字节,键长超过四个字节的部分附加在 Bucket 后面,而元素值很可能是一个 zval 结构,另外每个数组会分配一个由arBuckets 指向的 Bucket 指针数组, 虽然不能说每增加一个元素就需要一个指针,但是实际情况可能更糟。这么算来一个数组元素就会占用54 个字节,与上面的估算几乎一样。  一个空数组至少会占用 14(zval) + 39(HashTable) + 33(arBuckets) = 86个字节,作为一个变量应该在符号表中有个位置,也是一个数组元素,因此一个空数组变量需要 118个字节来描述和存储。从空间的角度来看,小型数组平均代价较大,当然一个脚本中不会充斥数量很大的小型数组,可以以较小的空间代价来获取编程上的快捷。但如果将数组当作容器来使用就是另一番景象了,实际应用经常会遇到多维数组,而且元素居多。比如10k个元素的一维数组大概消耗540k内存,而10kx 10 的二维数组理论上只需要 6M 左右的空间,但是按照 memory_get_usage的结果则两倍于此,[10k,5,2]的三维数组居然消耗了23M,小型数组果然是划不来的。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。PHP获取linux 的 某一刻内存使用率 内存使用率 磁盘
[问题点数:80分,结帖人wenbinglove]
PHP获取linux 的 某一刻内存使用率 内存使用率 磁盘
[问题点数:80分,结帖人wenbinglove]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年1月 PHP大版内专家分月排行榜第三2012年12月 PHP大版内专家分月排行榜第三
2012年2月 PHP大版内专家分月排行榜第一2012年1月 PHP大版内专家分月排行榜第一2011年11月 PHP大版内专家分月排行榜第一2011年9月 PHP大版内专家分月排行榜第一
2012年3月 PHP大版内专家分月排行榜第二2011年12月 PHP大版内专家分月排行榜第二2011年10月 PHP大版内专家分月排行榜第二
2011年11月 PHP大版内专家分月排行榜第二
2012年2月 PHP大版内专家分月排行榜第一2012年1月 PHP大版内专家分月排行榜第一2011年11月 PHP大版内专家分月排行榜第一2011年9月 PHP大版内专家分月排行榜第一
2012年3月 PHP大版内专家分月排行榜第二2011年12月 PHP大版内专家分月排行榜第二2011年10月 PHP大版内专家分月排行榜第二
2012年2月 PHP大版内专家分月排行榜第一2012年1月 PHP大版内专家分月排行榜第一2011年11月 PHP大版内专家分月排行榜第一2011年9月 PHP大版内专家分月排行榜第一
2012年3月 PHP大版内专家分月排行榜第二2011年12月 PHP大版内专家分月排行榜第二2011年10月 PHP大版内专家分月排行榜第二
2012年2月 PHP大版内专家分月排行榜第一2012年1月 PHP大版内专家分月排行榜第一2011年11月 PHP大版内专家分月排行榜第一2011年9月 PHP大版内专家分月排行榜第一
2012年3月 PHP大版内专家分月排行榜第二2011年12月 PHP大版内专家分月排行榜第二2011年10月 PHP大版内专家分月排行榜第二
匿名用户不能发表回复!|memory_get_usage 可以分析内存占用空间。
microtime 函数就可以分析程序执行时间。
echo '开始内存:'.memory_get_usage(), '';
$tmp = str_repeat('hello', 1000);
echo '运行后内存:'.memory_get_usage(), '';
unset($tmp);
echo '回到正常内存:'.memory_get_usage();
输出结果:
开始内存:147296
运行后内存:152456
回到正常内存:147296
输出执行时间
$stime=microtime(true); //获取程序开始执行的时间
*你要运行的程序
$etime=microtime(true);//获取程序执行结束的时间
$total=$etime-$stime;
//计算差值
echo "&br /&[页面执行时间:{$total} ]秒";
阅读(...) 评论()

我要回帖

更多关于 ios 获取内存使用情况 的文章

 

随机推荐