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

c4c0a4f86b87b020beffa9b01065d2df.gif

今天本来要写一个读取CPU使用率,调度程序开销的代码

查了一些资料,发现很多资料写的并不对。

基本上方法都是使用命令获取数据然后求取对应的比值。

但是取得比值的方式是有问题的。

对于LINUX来说,他的proc伪文件系统,保存的是当时的数据。需要通过差值来获取占用比和速度。

所以我们需要取得2个时间差的数据。下面是代码,需要根据具体的系统修改。

$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].'
';

$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].'
';

$t2 = $out[$k][10];

break;

}

}

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

$t = $t*8/1024/1024;

echo $t;

?>

网速

$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)."%
";

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)."%
";

//print_r($out);

$t=$t2-$t1;

$s=$s2-$s1;

echo $t.'/'.$s.'
';

echo $out[1][$n]."=".round(100*($s-$t)/$s,2)."%
";

?>

CPU

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值