Я хочу знать память и использование ЦП в php, потому что я использую cronejobs, иногда процессор перегружен, поэтому в этом случае я не хочу запускать больше процессов, я просто хочу пропустить этот cron.
Я думаю, что лучший способ – получить нагрузку , потому что это зависит не только от процессора, но и от скорости жесткого диска.
Вот документ: http://php.net/manual/en/function.sys-getloadavg.php
Взгляните на эту библиотеку http://phpsysinfo.sourceforge.net/
Демо: http://phpsysinfo.sourceforge.net/phpsysinfo/index.php?disp=dynamic
Edit: Это было сделано из комментария Стивена. Я ставлю его здесь только для того, чтобы люди получали достаточное количество информации для чтения.
Просто примечание: эта библиотека не слишком быстро. Я не мог найти способ просто вернуть CPU или просто ram, он возвращает ВСЕ, список аппаратных средств, статистику сети, использование hd, информацию os, почти все, что вы можете придумать. Для этого требуется около 4 секунд, поэтому может быть не лучшим вариантом, если вы хотите постоянно обновлять значение с помощью ajax или что-то в этом роде.
Как получить память и использование ЦП в PHP
Идеальные простые примеры.
– Память в procentage% ($ mem [2] / 1000 для используемой памяти в MB)
function get_server_memory_usage(){ $free = shell_exec('free'); $free = (string)trim($free); $free_arr = explode("\n", $free); $mem = explode(" ", $free_arr[1]); $mem = array_filter($mem); $mem = array_merge($mem); $memory_usage = $mem[2]/$mem[1]*100; return $memory_usage; }
– CPU в procentage%
function get_server_cpu_usage(){ $load = sys_getloadavg(); return $load[0]; }
У меня недавно возникла проблема, связанная с загрузкой процессора, и мне нравится делиться ею.
Вот мое решение помогло мне помочь:
Моя ситуация :
Я использую Zend Framework 1.2 для создания приложения мониторинга, и я хочу получить загрузку процессора и показать его на странице. после выполнения некоторых исследований я узнал, что могу использовать COM-объект и запрашивать 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.'); }
И я добавил действие и функцию для использования этой wmi и загрузки cpu в любое время, когда захочу, вызвав эту функцию.
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); }
Надеюсь, это поможет.