【发布时间】:2015-02-12 16:43:52
【问题描述】:
php 脚本如何获取当前 cpu 负载百分比?
在 linux 平台上,我们有 sys_loadavg()[0],这在 Windows 上是不存在的。
【问题讨论】:
标签: php
php 脚本如何获取当前 cpu 负载百分比?
在 linux 平台上,我们有 sys_loadavg()[0],这在 Windows 上是不存在的。
【问题讨论】:
标签: php
目前我知道有三种方法:
$com = new COM('winmgmts:{impersonationLevel=impersonate}');
$cpus = $com->execquery('SELECT LoadPercentage FROM Win32_Processor');
foreach ($cpus as $cpu) { $load = $cpu->LoadPercentage; break; }
com_dotnet 需要扩展。
wmic
exec('wmic cpu get LoadPercentage', $p);
return $p[2];
typeperf
$_ENV['typeperfCounter'] = '\processor(_total)\% processor time';
exec('typeperf -sc 1 "'.$_ENV['typeperfCounter'].'"', $p);
$line = explode(',', $p[2]);
$load = trim($line[1], '"');
注意:$_ENV['typeperfCounter'] 应根据系统区域设置。对于 ru_RU 它是
$_ENV['typeperfCounter'] = '\Процессор(_total)\% загруженности процессора';
它们都运行得很慢(老实说,我认为它们会阻塞当前线程的执行 1 秒以测量负载)。
【讨论】:
在这里查看我的回复。 兼容Windows/Linux操作系统的功能,经过测试。
在 Linux 中返回一个包含 3 个值的数组 在 Windows 中返回一个包含 1 个值的数组
【讨论】: