3

我写了这个 PHP 函数:

<?php
//windows cpu temperature
function win_cpu_temp(){
    $wmi = new COM("winmgmts://./root\WMI");
    $cpus = $wmi->execquery("SELECT * FROM MSAcpi_ThermalZoneTemperature");
    foreach ($cpus as $cpu) {
        $cpupre = $cpu->CurrentTemperature;
    }
    $cpu_temp = ($cpupre/10)-273.15 . ' C';
    return $cpu_temp;
}
echo win_cpu_temp();
?>

我的问题是脚本显示59.55 C我认为是正确的。几个小时后我检查了这个值,它完全一样。我只是让 CPU 工作在 90% 压缩视频十分钟,这个值还是一样的。

谁能帮我找到这个功能的“真实”价值?

我已阅读(无济于事): MSAcpi_ThermalZoneTemperature 类未显示实际温度

比如说,“Core Temp”是如何获得它的值的?同一台计算机,它报告的温度在 49 到 53 摄氏度之间。

4

1 回答 1

5

经过一番挖掘,我发现使用 MSAcpi_ThermalZoneTemperature 的常见问题是它取决于在您的系统上实现。

您可以尝试查询Win32_TemperatureProbe并查看是否有任何运气。

MSAcpi_ThermalZoneTemperature 或 Win32_TemperatureProbe 在我的系统上都不起作用,但如果您具有管理员访问权限,则可以使用http://openhardwaremonitor.org/,它为所有可用的传感器数据提供了 WMI 接口。

这对我很有用,我能够从 PHP 脚本准确地报告 CPU Core temp:

function report_cpu_temp(){    
    $wmi = new COM('winmgmts://./root/OpenHardwareMonitor');
    $result = $wmi->ExecQuery("SELECT * FROM Sensor");
    foreach($result as $obj){
        if($obj->SensorType == 'Temperature' && strpos($obj->Parent, 'cpu') > 0)
            echo "$obj->Name ($obj->Value C)"; // output cpu core temp
        else
            echo 'skipping ' . $obj->Identifier ;
        echo '<br />';
    }
}

希望这可以帮助。

于 2012-04-13T20:59:22.747 回答