private function GetCPUInformations() { $bufr = ""; $results = array("cpus"=>0); if (CommonFunctions::rfts('/proc/cpuinfo', $bufr)) { $bufe = explode("\n", $bufr); $results = array('cpus'=>0, 'bogomips'=>0); $arrBuff = array(); foreach ($bufe as $buf) { $arrBuff = preg_split('/\s+:\s+/', trim($buf)); if (count($arrBuff) == 2) { $key = $arrBuff[0]; $value = $arrBuff[1]; switch ($key) { case 'model name': $results['model'] = $value; break; case 'cpu MHz': $results['cpuspeed'] = sprintf('%.2f', $value); break; case 'cycle frequency [Hz]': $results['cpuspeed'] = sprintf('%.2f', $value / 1000000); // For Alpha arch - 2.2.x break; case 'clock': $results['cpuspeed'] = sprintf('%.2f', $value); // For PPC arch (damn borked POS) break; case 'cpu': $results['model'] = $value; // For PPC arch (damn borked POS) break; case 'L2 cache': $results['cache'] = $value * 1024; // More for PPC break; case 'revision': $results['model'] .= ' ( rev: '.$value.')'; // For PPC arch (damn borked POS) break; case 'cpu model': $results['model'] .= ' ('.$value.')'; // For Alpha arch - 2.2.x break; case 'cache size': $results['cache'] = (preg_replace("/[a-zA-Z]/", "", $value)) * 1024; break; case 'bogomips': $results['bogomips'] += $value; break; case 'BogoMIPS': $results['bogomips'] += $value; // For alpha arch - 2.2.x break; case 'BogoMips': $results['bogomips'] += $value; // For sparc arch break; case 'cpus detected': $results['cpus'] += $value; // For Alpha arch - 2.2.x break; case 'system type': $results['model'] .= ', '.$value.' '; // Alpha arch - 2.2.x break; case 'platform string': $results['model'] .= ' ('.$value.')'; // Alpha arch - 2.2.x break; case 'processor': $results['cpus'] += 1; break; case 'Cpu0ClkTck': $results['cpuspeed'] = sprintf('%.2f', hexdec($value) / 1000000); // Linux sparc64 break; case 'Cpu0Bogo': $results['bogomips'] += $value; // Linux sparc64 & sparc32 break; case 'ncpus probed': $results['cpus'] = $value; // Linux sparc64 & sparc32 break; } } } // sparc64 specific code follows // This adds the ability to display the cache that a CPU has // Originally made by Sven Blumenstein <*****@*****.**> in 2004 // Modified by Tom Weustink <*****@*****.**> in 2004 $sparclist = array('SUNW,UltraSPARC@0,0', 'SUNW,UltraSPARC-II@0,0', 'SUNW,UltraSPARC@1c,0', 'SUNW,UltraSPARC-IIi@1c,0', 'SUNW,UltraSPARC-II@1c,0', 'SUNW,UltraSPARC-IIe@0,0'); foreach ($sparclist as $name) { if (CommonFunctions::rfts('/proc/openprom/'.$name.'/ecache-size', $buf, 1, 32, false)) { $results['cache'] = base_convert($buf, 16, 10); } } // sparc64 specific code ends // XScale detection code if ($results['cpus'] == 0) { foreach ($bufe as $buf) { $fields = preg_split('/\s*:\s*/', trim($buf), 2); if (sizeof($fields) == 2) { list($key, $value) = $fields; switch ($key) { case 'Processor': $results['cpus'] += 1; $results['model'] = $value; break; case 'BogoMIPS': $results['cpuspeed'] = $value; //BogoMIPS are not BogoMIPS on this CPU, it's the speed, no BogoMIPS available break; case 'I size': $results['cache'] = $value * 1024; break; case 'D size': $results['cache'] += $value * 1024; break; } } } } } $keys = array_keys($results); $keys2be = array('model', 'cpuspeed', 'cpus'); while ($ar_buf = each($keys2be)) { if (!in_array($ar_buf[1], $keys)) { $results[$ar_buf[1]] = '0'; } } if (CommonFunctions::rfts('/proc/acpi/thermal_zone/THRM/temperature', $buf, 1, 4096, false)) { $results['temp'] = substr($buf, 25, 2); } //$results['CPULoad'] = $this->CPULoad(); return CommonFunctions::ArrayToXML(array($results), 'CPUInformations'); }