php脚本如何以百分比形式获得当前的cpu负载?
在linux平台上,我们有sys_loadavg()[0]
,这在Windows上不存在。
答案 0 :(得分:2)
到目前为止,我知道有三种方法:
$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秒以测量负载)。
答案 1 :(得分:0)
在这里查看我的回复。 与Windows / Linux操作系统兼容的功能,经过测试。
在Linux中返回一个包含3个值的数组 在Windows中返回1值的数组