2011-09-24 19 views

Trả lời

10

Tôi nghĩ cách tốt hơn là lấy tải avarage, bởi vì nó không chỉ phụ thuộc vào CPU, mà còn ở tốc độ HDD.

Đây là một doc: http://php.net/manual/en/function.sys-getloadavg.php

+0

Có ba giá trị đó là gì? Tải trung bình \t 0,48 0,76 0,43 –

+0

Số đầu tiên được tính trong phút cuối, giây được tính trong 5 phút cuối cùng và số cuối được tính trong 15 phút qua. Những con số này xác định bao nhiêu chiếm một lõi. Vì vậy, nếu bạn có lõi đơn và con số này dưới 1.0 thì hệ thống của bạn hoàn toàn chịu trách nhiệm. Tất cả thông tin là ở đây: http://en.wikipedia.org/wiki/Load_(computing) – neworld

6

Hãy nhìn vào thư viện này http://phpsysinfo.sourceforge.net/

Demo: http://phpsysinfo.sourceforge.net/phpsysinfo/index.php?disp=dynamic

Edit: này được lấy từ bình luận Stephen. Tôi đặt nó ở đây chỉ để nó được tiếp xúc đủ để mọi người đọc.

Chỉ cần lưu ý: thư viện này không quá linh hoạt. Tôi không thể tìm thấy một cách để chỉ trả lại CPU hoặc chỉ ram, nó trả về tất cả mọi thứ, danh sách phần cứng, số liệu thống kê mạng, sử dụng hd, thông tin os, khá nhiều tất cả mọi thứ bạn có thể nghĩ của. Việc này mất khoảng 4 giây để hoàn thành, do đó, có thể không phải là tùy chọn tốt nhất nếu bạn muốn giá trị cập nhật liên tục bằng cách sử dụng ajax hoặc thứ gì đó sắp xếp.

+1

Chỉ cần một lưu ý: thư viện này không phải là quá linh hoạt. Tôi không thể tìm thấy một cách để chỉ trả lại CPU hoặc chỉ ram, nó trả về tất cả mọi thứ, danh sách phần cứng, số liệu thống kê mạng, sử dụng hd, thông tin os, khá nhiều tất cả mọi thứ bạn có thể nghĩ đến. Điều này mất khoảng 4 giây để hoàn thành, do đó, nó có thể không phải là lựa chọn tốt nhất nếu bạn muốn có một giá trị cập nhật liên tục bằng cách sử dụng ajax hoặc một cái gì đó sắp xếp. –

+0

@Stephen Cảm ơn những người đứng đầu Stephen. Tôi đã trích dẫn bình luận của bạn trong câu trả lời của tôi. Chỉ trong trường hợp một số người có thể bỏ lỡ nó. –

1

thời gian gần đây tôi có một số vấn đề để có được tải CPU và tôi cảm thấy như chia sẻ nó.

Dưới đây là giải pháp phù thủy của tôi giúp tôi ra:

tình hình của tôi:

Tôi đã sử dụng Zend Framework 1.2 để xây dựng ứng dụng giám sát và tôi muốn để có được tải CPU và hiển thị nó trên trang. sau khi làm một số nghiên cứu tôi phát hiện ra tôi có thể sử dụng COM Object và truy vấn hệ điều hành với WMI Win vì vậy tôi đặt những mã để hàm init của tôi:

/* 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.'); 
    } 
  • Bạn có thể sử dụng nó bất cứ nơi nào bạn muốn, tôi có sử dụng nó trong hàm init beacuse của cấu trúc Zend.

Và tôi đã thêm Hành động và chức năng sử dụng wmi đó và tải CPU bất kỳ lúc nào tôi muốn bằng cách gọi hàm đó.

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); 
} 
  • bởi vì tôi những dữ liệu thời gian thực tôi đặt những mã trong một hàm Nếu không, bạn có thể viết nó trong đơn không Object Oriented tập tin PHP.

Hy vọng điều đó sẽ hữu ích.

2

How to get Memory and CPU usage in PHP

Ví dụ đơn giản hoàn hảo.

- Memory trong procentage% ($ mem [2]/1000 cho bộ nhớ được sử dụng trong 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 trong procentage%

function get_server_cpu_usage(){ 

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

} 
+0

Nó sẽ rất tuyệt vời nếu bạn xây dựng câu trả lời của bạn với một ví dụ quá. – Sanoob

Các vấn đề liên quan