我想知道php中的内存和CPU使用情况,因为我有时会使用cronejobs CPU过载所以在这种情况下我不想开始更多的进程,我只是想跳过这个cron。
答案 0 :(得分:10)
我认为更好的方法是获取平均负载,因为它不仅取决于CPU,还取决于硬盘速度。
答案 1 :(得分:6)
看看这个图书馆http://phpsysinfo.sourceforge.net/
演示:http://phpsysinfo.sourceforge.net/phpsysinfo/index.php?disp=dynamic
编辑:这取自斯蒂芬的评论。我把它放在这里只是为了让人们有足够的曝光度来阅读。
请注意:这个库不是太爽口了。我找不到办法 只返回CPU或只是ram,它返回一切,硬件列表, 网络统计数据,高清用法,操作系统信息,几乎所有你能想到的东西 的。这需要大约4秒才能完成,所以它可能不是 如果你想使用ajax或不断更新值,最好的选择 某种东西。
答案 2 :(得分:2)
How to get Memory and CPU usage in PHP
完美的简单例子。
- procntage中的内存%($ 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%
function get_server_cpu_usage(){
$load = sys_getloadavg();
return $load[0];
}
答案 3 :(得分:1)
我最近有一些问题需要加载CPU,我觉得要分享它。
这是我的解决方案,它帮助我:
我的情况:
我使用Zend Framework 1.2来构建监控应用程序,我希望得到cpu加载并在页面上显示它。在做了一些研究之后我发现我可以使用COM对象并用wmi查询Win OS,所以我将这些代码放到我的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.');
}
我添加了一个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);
}
希望有所帮助。