An example of code to obtain cpu and memory usage in php

WBOY
Release: 2016-07-25 08:59:32
Original
1046 people have browsed it
  1. /*

  2. @系统参数探测 LINUX
  3. @Edit bbs.it-home.org
  4. @date 2013/5/8
  5. */
  6. function sys_linux()
  7. {
  8. // CPU
  9. if (false === ($str = @file(“/proc/cpuinfo”))) return false;
  10. $str = implode(“”, $str);
  11. @preg_match_all(“/models+names{0,}:+s{0,}([ws)(.]+)[rn]+/”, $str, $model);
  12. //@preg_match_all(“/cpus+MHzs{0,}:+s{0,}([d.]+)[rn]+/”, $str, $mhz);
  13. @preg_match_all(“/caches+sizes{0,}:+s{0,}([d.]+s{0,}[A-Z]+[rn]+)/”, $str, $cache);
  14. if (false !== is_array($model[1]))
  15. {
  16. $res['cpu']['num'] = sizeof($model[1]);
  17. for($i = 0; $i < $res['cpu']['num']; $i++)
  18. {
  19. $res['cpu']['detail'][] = “类型:”.$model[1][$i].” 缓存:”.$cache[1][$i];
  20. }
  21. if (false !== is_array($res['cpu']['detail'])) $res['cpu']['detail'] = implode(”
  22. “, $res['cpu']['detail']);
  23. }

  24. // UPTIME

  25. if (false === ($str = @file(“/proc/uptime”))) return false;
  26. $str = explode(” “, implode(“”, $str));
  27. $str = trim($str[0]);
  28. $min = $str / 60;
  29. $hours = $min / 60;
  30. $days = floor($hours / 24);
  31. $hours = floor($hours – ($days * 24));
  32. $min = floor($min – ($days * 60 * 24) – ($hours * 60));
  33. if ($days !== 0) $res['uptime'] = $days.”天”;
  34. if ($hours !== 0) $res['uptime'] .= $hours.”小时”;
  35. $res['uptime'] .= $min.”分钟”;

  36. // MEMORY

  37. if (false === ($str = @file(“/proc/meminfo”))) return false;
  38. $str = implode(“”, $str);
  39. preg_match_all(“/MemTotals{0,}:+s{0,}([d.]+).+?MemFrees{0,}:+s{0,}([d.]+).+?SwapTotals{0,}:+s{0,}([d.]+).+?SwapFrees{0,}:+s{0,}([d.]+)/s”, $str, $buf);

  40. $res['memTotal'] = round($buf[1][0]/1024, 2);

  41. $res['memFree'] = round($buf[2][0]/1024, 2);
  42. $res['memUsed'] = ($res['memTotal']-$res['memFree']);
  43. $res['memPercent'] = (floatval($res['memTotal'])!=0)?round(($res['memUsed']/$res['memTotal'])*90,2):0;

  44. $res['swapTotal'] = round($buf[3][0]/1024, 2);

  45. $res['swapFree'] = round($buf[4][0]/1024, 2);
  46. $res['swapUsed'] = ($res['swapTotal']-$res['swapFree']);
  47. $res['swapPercent'] = (floatval($res['swapTotal'])!=0)?round(($res['swapUsed']/$res['swapTotal'])*90,2):0;

  48. // LOAD AVG

  49. if (false === ($str = @file(“/proc/loadavg”))) return false;
  50. $str = explode(” “, implode(“”, $str));
  51. $str = array_chunk($str, 3);
  52. $res['loadAvg'] = implode(” “, $str[0]);

  53. return $res;

  54. }
  55. /*
  56. 系统参数探测 FreeBSD
  57. */
  58. function sys_freebsd()
  59. {
  60. //CPU
  61. if (false === ($res['cpu']['num'] = get_key(“hw.ncpu”))) return false;
  62. $res['cpu']['detail'] = get_key(“hw.model”);

  63. //LOAD AVG

  64. if (false === ($res['loadAvg'] = get_key(“vm.loadavg”))) return false;
  65. $res['loadAvg'] = str_replace(“{“, “”, $res['loadAvg']);
  66. $res['loadAvg'] = str_replace(“}”, “”, $res['loadAvg']);

  67. //UPTIME

  68. if (false === ($buf = get_key(“kern.boottime”))) return false;
  69. $buf = explode(‘ ‘, $buf);
  70. $sys_ticks = time() – intval($buf[3]);
  71. $min = $sys_ticks / 60;
  72. $hours = $min / 60;
  73. $days = floor($hours / 24);
  74. $hours = floor($hours – ($days * 24));
  75. $min = floor($min – ($days * 60 * 24) – ($hours * 60));
  76. if ($days !== 0) $res['uptime'] = $days.”天”;
  77. if ($hours !== 0) $res['uptime'] .= $hours.”小时”;
  78. $res['uptime'] .= $min.”分钟”;

  79. //MEMORY

  80. if (false === ($buf = get_key(“hw.physmem”))) return false;
  81. $res['memTotal'] = round($buf/1024/1024, 2);
  82. $buf = explode(“n”, do_command(“vmstat”, “”));
  83. $buf = explode(” “, trim($buf[2]));

  84. $res['memFree'] = round($buf[5]/1024, 2);

  85. $res['memUsed'] = ($res['memTotal']-$res['memFree']);
  86. $res['memPercent'] = (floatval($res['memTotal'])!=0)?round(($res['memUsed']/$res['memTotal'])*90,2):0;

  87. $buf = explode(“n”, do_command(“swapinfo”, “-k”));

  88. $buf = $buf[1];
  89. preg_match_all(“/([0-9]+)s+([0-9]+)s+([0-9]+)/”, $buf, $bufArr);
  90. $res['swapTotal'] = round($bufArr[1][0]/1024, 2);
  91. $res['swapUsed'] = round($bufArr[2][0]/1024, 2);
  92. $res['swapFree'] = round($bufArr[3][0]/1024, 2);
  93. $res['swapPercent'] = (floatval($res['swapTotal'])!=0)?round(($res['swapUsed']/$res['swapTotal'])*90,2):0;

  94. return $res;

  95. }

  96. /*

  97. Get parameter value FreeBSD
  98. */
  99. function get_key($keyName)
  100. {
  101. return do_command('sysctl', “-n $keyName”);
  102. }
  103. /*

  104. Determine the location of the executable file FreeBSD
  105. */
  106. function find_command($commandName)
  107. {
  108. $path = array('/bin', '/sbin', '/usr/bin', '/usr/sbin', '/usr/local/bin', '/usr/local/sbin');
  109. foreach($path as $p)
  110. {
  111. if (@is_executable("$p/$commandName" )) return “$p/$commandName”;
  112. }
  113. return false;
  114. }

  115. /*

  116. Execute system command FreeBSD
  117. */
  118. function do_command($commandName, $args)
  119. {
  120. $buffer = "";
  121. if (false === ($command = find_command($commandName))) return false;
  122. if ($fp = @popen("$command $args", 'r'))
  123. {
  124. while (!@feof($fp))
  125. {
  126. $buffer .= @fgets($fp, 4096);
  127. }
  128. return trim($buffer);
  129. }
  130. return false;
  131. }
  132. ?> ;

Copy code

Instructions: Memory can be handled with this function: memory_get_usage() Under Windows, only the results of running the cmd command can be read. For example:

  1. $a = system('mem');
  2. echo $a."
  3. ";
  4. //or
  5. $a = system('mem');
  6. echo $a. "
  7. ";
  8. ?>
Copy code


source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!