2011-09-24 110 views
5

我想知道php中的内存和CPU使用情况,因为我使用的是cronejobs,有时CPU超载,所以在这种情况下,我不想启动更多的进程,我只是想跳过这个cron。如何获得CPU和内存使用率

回答

10

我认为更好的办法是让负载avarage,因为它不仅取决于CPU,但硬盘的速度也。

这里是一个DOC:http://php.net/manual/en/function.sys-getloadavg.php

+0

有三个值是什么? 负载平均值\t 0.48 0.76 0.43 –

+0

第一个数字在最后一分钟计算,第二个数字在最近5分钟内计算,最后一个数字在最近15分钟内计算。这些数字决定了占用核心的数量。所以如果你有单核心,这个数字低于1.0,那么你的系统是完全的责任。所有信息在这里:http://en.wikipedia.org/wiki/Load_(computing) – neworld

6

在这个图书馆看看http://phpsysinfo.sourceforge.net/

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

编辑:这是斯蒂芬的评论拍摄。我把它放在这里,以便让人们有足够的阅读时间。

只是说明:这个库不是太活泼。我找不到 只是返回CPU或只是RAM,它返回一切,硬件列表, 网络统计信息,高清使用情况,操作系统信息,几乎所有你能想到的东西 。这需要大约4秒钟才能完成,因此如果您想要使用ajax或 不断更新值,那么它可能不是 最佳选项。

+1

只是注意:这个库不太活泼。我无法找到一种方法来返回CPU或只是RAM,它会返回一切,硬件列表,网络状态,高清使用情况,操作系统信息,几乎所有你能想到的。这需要大约4秒钟才能完成,因此如果您想要使用ajax或类似的东西不断更新值,它可能不是最好的选择。 –

+0

@Stephen感谢Stephen的领导。我在我的回答中引用了您的评论。以防万一有人会错过它。 –

1

最近我有一些问题,以便获得CPU的负荷,我觉得分享。

这里是我的解决方案巫帮我出:

我的情况:

我已经使用Zend框架1.2建立监测应用程序,我希望得到的CPU负载,并显示在页面上。做一些研究,我发现我可以使用COM对象和查询赢OS使用WMI后,所以我把这些代码到我的初始化函数:

/* 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,并在任何时候通过调用该函数来获取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); 
} 
  • 怎么一回事,因为我什么的实时数据,我把这些代码的功能,否则,你可以在它单一的非面向对象的PHP文件中编写。

希望它有帮助。

2

How to get Memory and CPU usage in 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]; 

} 
+0

如果你用一个例子来阐述你的答案,这将是非常好的。 – Sanoob