【问题标题】:How to get current cpu load from a PHP script on Windows?如何从 Windows 上的 PHP 脚本获取当前的 cpu 负载?
【发布时间】:2015-02-12 16:43:52
【问题描述】:

php 脚本如何获取当前 cpu 负载百分比? 在 linux 平台上,我们有 sys_loadavg()[0],这在 Windows 上是不存在的。

【问题讨论】:

    标签: php


    【解决方案1】:

    目前我知道有三种方法:

    COM 调用

        $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], '"');
    
    1. 注意:$_ENV['typeperfCounter'] 应根据系统区域设置。对于 ru_RU 它是

      $_ENV['typeperfCounter'] = '\Процессор(_total)\% загруженности процессора';
      

    它们都运行得很慢(老实说,我认为它们会阻塞当前线程的执行 1 秒以测量负载)。

    【讨论】:

      【解决方案2】:

      在这里查看我的回复。 兼容Windows/Linux操作系统的功能,经过测试。

      在 Linux 中返回一个包含 3 个值的数组 在 Windows 中返回一个包含 1 个值的数组

      How to get CPU usage and RAM usage without exec?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-08
        • 2011-01-23
        • 1970-01-01
        • 1970-01-01
        • 2015-02-26
        • 1970-01-01
        • 2017-09-09
        • 2011-04-10
        相关资源
        最近更新 更多