Недавно у меня возникла проблема с загрузкой процессора, и я хочу поделиться ею.
Вот мое решение, которое поможет мне:
Моя ситуация:
Я использую Zend Framework 1.2 для создания приложения мониторинга и хочу загрузить процессор и показать его на странице. Проведя некоторые исследования, я обнаружил, что могу использовать COM Object и запрашивать Win OS с помощью wmi, поэтому я поместил этот код в свою функцию init:
/* Initialize action controller here */
$this->wmi = new COM('winmgmts:{impersonationLevel=impersonate}//./root/cimv2');
if (!is_object($this->wmi)) {
throw new GetInfoException('This needs access to WMI. Please enable DCOM in php.ini and allow the current user to access the WMI DCOM object.');
}
- Вы можете использовать его где угодно, я использовал его в функции init из-за структуры Zend.
И я добавил Action и функцию для использования этого wmi и загрузки процессора в любое время, когда захочу, вызвав эту функцию.
public function cpuloadAction()
{
echo json_encode($this->getLoad());
exit();
}
private function getLoad() {
// Time?
if (!empty($this->settings['timer']))
$t = new LinfoTimerStart('Load Averages');
$load = array();
foreach ($this->wmi->ExecQuery("SELECT LoadPercentage FROM Win32_Processor") as $cpu) {
$load[] = $cpu->LoadPercentage;
}
//return round(array_sum($load) / count($load), 2) . "%";
return (int)round(array_sum($load) / count($load), 2);
}
- из-за того, что в реальном времени я помещаю этот код в функцию. В противном случае вы можете записать его в один неориентированный объектный PHP-файл.
Надеюсь, это поможет.