Как я могу получить использование процессора и памяти - PullRequest
5 голосов
/ 24 сентября 2011

Я хочу знать использование памяти и процессора в php, потому что я использую cronejobs, иногда процессор перегружен, поэтому в этом случае я не хочу запускать больше процессов, я просто хочу пропустить этот cron. *

Ответы [ 4 ]

10 голосов
/ 24 сентября 2011

Я думаю, что лучший способ получить загрузить avarage , потому что это зависит не только от процессора, но и от скорости жесткого диска.

Вот документация: http://php.net/manual/en/function.sys-getloadavg.php

6 голосов
/ 24 сентября 2011

Посмотрите на эту библиотеку http://phpsysinfo.sourceforge.net/

Демо: http://phpsysinfo.sourceforge.net/phpsysinfo/index.php?disp=dynamic

Редактировать: Это было взято из комментария Стивена. Я поместил это здесь только для того, чтобы оно получило достаточно информации, чтобы люди могли читать.

Просто примечание: эта библиотека не слишком быстрая. Я не мог найти способ просто вернуть процессор или просто оперативную память, он возвращает все, список оборудования, статистика по сети, использование hd, информация о os, почти все, что вы можете подумать из. Это займет около 4 секунд, поэтому это может быть не лучший вариант, если вы хотите постоянно обновлять значение с помощью ajax или что-то в этом роде.

2 голосов
/ 03 апреля 2014

Как получить использование памяти и процессора в PHP

Прекрасные простые примеры.

- Объем памяти в процентах% ($ mem [2] / 1000 для использованныхпамять в МБ)

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;
}

- ЦП в процентах%

function get_server_cpu_usage(){

$load = sys_getloadavg();
return $load[0];

}
1 голос
/ 02 декабря 2012

Недавно у меня возникла проблема с загрузкой процессора, и я хочу поделиться ею.

Вот мое решение, которое поможет мне:

Моя ситуация:

Я использую 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-файл.

Надеюсь, это поможет.

...