欢迎来到DESIPO.COM,外贸电子商务整合专家!登录 | 免费注册 ?
会员优惠 | 软件下载 | 客服中心 | 收藏本站 | 购物车[0件]


PHP 获取 CPU 网速信息的方法,针对LINUX系统

编辑时间2019年 05月 27日 查看全部评论 写评论
PHP 获取 CPU 网速信息的方法,针对LINUX系统
今天本来要写一个读取CPU使用率,调度程序开销的代码
查了一些资料,发现很多资料写的并不对。
基本上方法都是使用命令获取数据然后求取对应的比值。
但是取得比值的方式是有问题的。
对于LINUX来说,他的proc伪文件系统,保存的是当时的数据。需要通过差值来获取占用比和速度。
所以我们需要取得2个时间差的数据。下面是代码,需要根据具体的系统修改。

<?php
$str = shell_exec('more /proc/net/dev');
$pattern = "/([^\s]+):[\s]{0,}(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/";
preg_match_all($pattern, $str, $out);
foreach($out[0] as $k => $r)
{
    if(strpos($r,'eth0') !== false)
    {
        echo $out[0][$k].'<br/>';
        $t1 = $out[$k][10];
        break;
    }
}
$sec = 10;
sleep($sec);
$str = shell_exec('more /proc/net/dev');
$pattern = "/([^\s]+):[\s]{0,}(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/";
preg_match_all($pattern, $str, $out);
foreach($out[0] as $k => $r)
{
    if(strpos($r,'eth0') !== false)
    {
        echo $out[0][$k].'<br/>';
        $t2 = $out[$k][10];
        break;
    }
}

$t=($t2-$t1)/$sec;

$t = $t*8/1024/1024;
echo $t;
?>
网速

<?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]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)/";
preg_match_all($pattern, $str, $out);
$n = 0;
$s1 = $out[2][$n]+$out[3][$n]+$out[4][$n]+$out[5][$n]+$out[6][$n]+$out[7][$n]+$out[8][$n]+$out[9][$n]+$out[10][$n]+$out[11][$n];
$t1 = $out[5][$n];
//echo $out[1][$n]."=".round((100*($out[1][$n]+$out[2][$n]+$out[3][$n])/($out[4][$n]+$out[5][$n]+$out[6][$n]+$out[7][$n]+$out[8][$n]+$out[9][$n])),2)."%<br>";
sleep(60);
$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]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)/";
preg_match_all($pattern, $str, $out);
$n = 0;
$s2 = $out[2][$n]+$out[3][$n]+$out[4][$n]+$out[5][$n]+$out[6][$n]+$out[7][$n]+$out[8][$n]+$out[9][$n]+$out[10][$n]+$out[11][$n];
$t2 = $out[5][$n];
//echo $out[1][$n]."=".round((100*($out[1][$n]+$out[2][$n]+$out[3][$n])/($out[4][$n]+$out[5][$n]+$out[6][$n]+$out[7][$n])),2)."%<br>";
//print_r($out);
$t=$t2-$t1;
$s=$s2-$s1;
echo $t.'/'.$s.'<br/>';
echo $out[1][$n]."=".round(100*($s-$t)/$s,2)."%<br>";
?>
CPU
标签:
没有评论
Copyright © 2012-2013 迪赛普科技 版权所有

合作邮箱:admin@desipo.com 合作QQ:76052083