【问题标题】:How to get the load of each CPU Core in PHP on Windows?如何在 Windows 上获取 PHP 中每个 CPU 核心的负载?
【发布时间】:2013-01-24 09:13:42
【问题描述】:

有没有办法做到这一点? 我尝试使用WMIWin32_PerfRawData_PerfOS_Processor 类,我最终得到了PercentProcessorTimeTimestamp_PerfTime,这需要睡一会儿才能计算百分比,但这不是我需要的,我需要一些东西不需要 PHP 等待几秒钟,它应该几乎立即打印出负载

【问题讨论】:

  • 我认为你可能不得不寻找彗星编程或长轮询,因为这两个巨人在 php 中用于实时更新和结果。

标签: php windows load wmi core


【解决方案1】:

一种方法是让另一个程序在 PHP 能够直接读取值的地方持续检查和记录处理器负载。日志记录可能会稍有延迟,但不会超过几秒钟。

您可能可以在单独的 PHP 脚本中执行此操作。只需确保在检查之间睡眠()一小会儿,否则处理器读取脚本会立即将处理器推到最大负载。

【讨论】:

    【解决方案2】:

    您可以使用XPerf,记录CPU 活动,然后通过PHP 访问这些日志文件?在this one等线程中还有其他建议,建议尝试Linfo

    【讨论】:

    • 我将在当天晚些时候检查 Xperf
    【解决方案3】:

    我知道这是一篇旧帖子,但我前段时间处于相同位置,但设法弄清楚了。

    而不是使用

    Win32_PerfRawData_PerfOS_Processor

    使用

    Win32_PerfFormattedData_PerfOS_Processor

    举例

    $data['core']  = array();
    $wmi           = new COM("winmgmts:\\");
    $cpu_cores     = $wmi->execquery("SELECT PercentProcessorTime FROM Win32_PerfFormattedData_PerfOS_Processor");
    
    foreach ($cpu_cores as $core) {
        $data['core'][] = $core->PercentProcessorTime;
    }
    
    // If CPU Is A Dual Core 
    echo $data['core'][0].'%'; // CORE 1 LOAD
    echo $data['core'][1].'%'; // CORE 2 LOAD
    echo $data['core'][2].'%'; // TOTAL CPU LOAD
    
    // If CPU Is A Quad Core 
    echo $data['core'][0].'%'; // CORE 1 LOAD
    echo $data['core'][1].'%'; // CORE 2 LOAD
    echo $data['core'][2].'%'; // CORE 3 LOAD
    echo $data['core'][3].'%'; // CORE 4 LOAD
    echo $data['core'][4].'%'; // TOTAL CPU LOAD
    
    And So On 
    

    【讨论】:

      猜你喜欢
      • 2011-02-25
      • 2015-05-01
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      • 2015-03-11
      • 1970-01-01
      相关资源
      最近更新 更多