そうする方法はありますか?WMI
とWin32_PerfRawData_PerfOS_Processor
クラスを使用してみましたが、パーセンテージを計算するためにしばらくスリープする必要があるPercentProcessorTime
andTimestamp_PerfTime
がありますが、それは私が必要とするものではありません.PHPを数秒待つ必要がないものが必要です.印刷する必要があります.ほぼ瞬時に負荷を軽減
3 に答える
0
1 つの方法は、PHP が値を直接読み取ることができる場所でプロセッサの負荷を継続的にチェックしてログに記録する別のプログラムを用意することです。ロギングにわずかな遅延が発生する可能性がありますが、数秒ほどではありません。
おそらく、別の PHP スクリプトでそれを行うことができます。チェックの合間に必ず sleep() を短時間実行してください。そうしないと、プロセッサの読み取りスクリプトがプロセッサをすぐに最大負荷に押し上げてしまいます。
于 2013-01-24T09:22:59.373 に答える
0
私はこれが古い投稿であることを知っていますが、私はしばらく前に同じ位置にいましたが、なんとかそれを理解することができました.
使用する代わりに
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
于 2015-04-12T11:38:47.987 に答える