 | | Offres d'emplois |  | Développeur PHP/MySQL Start-up basée à Chantilly (60) à 35 minutes de Paris, recrute développeur PHP/MySQL confirmé en CDI, pour accompagner sa forte croissance.
Comp... | |
 | | Avez vous lu ? |  | | |
|
 Une classe pour accéder aux informations système | |  |

<?php
error_reporting(5);
class systeme {
// --- retourne un tableau indiquant la charge système
function infos_charge() {
if ($fd = fopen("/proc/loadavg", "r")) {
$results = split(" ", fgets($fd, 4096));
fclose($fd);
}
else {
$results = array("xx","xx","xx");
}
return $results;
}
// --- retourne la valeur de uptime
function infos_uptime() {
$fd = fopen("/proc/uptime", "r");
$tmptb = split(" ", fgets($fd, 4096));
fclose($fd);
$secondes = trim($tmptb[0]);
$min = $secondes / 60;
$heures = $min / 60;
$jours = floor($heures / 24);
$heures = floor($heures - ($jours * 24));
$min = floor($min - ($jours * 60 * 24) - ($heures * 60));
if ($days != 0) {
$result = "$jours jours, ";
}
if ($hours != 0) {
$result .= "$heures heures, ";
}
$result .= "$min minutes";
return $result;
}
// --- retourne le nombre de sessions Apache
function infos_apache() {
$result = trim(`ps -e | fgrep httpd | wc -l`);
return $result;
}
// --- retourne des informations sur la CPU
function infos_cpu() {
$results = array();
$tmptb = array();
if ($fd = fopen("/proc/cpuinfo", "r")) {
while ($buf = fgets($fd, 4096)) {
list($key, $value) = preg_split("/\s+:\s+/", trim($buf), 2);
switch ($key) {
case "model name":
$results['model'] = $value;
break;
case "cpu MHz":
$results['mhz'] = sprintf("%.2f", $value);
break;
case "clock":
$results['mhz'] = sprintf("%.2f", $value);
break;
case "cpu":
$results['model'] = $value;
break;
case "revision":
$results['model'] .= " (rev: " . $value . ")";
break;
case "cache size":
$results['cache'] = $value;
break;
case "bogomips":
$results['bogomips'] += $value;
break;
case "processor":
$results['cpus'] += 1;
break;
}
}
fclose($fd);
}
$keys = compat_array_keys($results);
$keys2be = array("model", "mhz", "cache", "bogomips", "cpus");
while ($tmptb = each($keys2be)) {
if (!compat_in_array($tmptb[1], $keys)) {
$results[$tmptb[1]] = 'N.A.';
}
}
return $results;
}
// --- informations sur la mémoire et la zone de swap
function infos_memoire() {
if ($fd = fopen("/proc/meminfo", "r")) {
while ($buf = fgets($fd, 4096)) {
if (preg_match("/Mem:\s+(.*)$/", $buf, $tmptb)) {
$tmptb = preg_split("/\s+/", $tmptb[1], 6);
$results['ram'] = array();
$results['ram']['total'] = $tmptb[0] / 1024;
$results['ram']['used'] = $tmptb[1] / 1024;
$results['ram']['free'] = $tmptb[2] / 1024;
$results['ram']['shared'] = $tmptb[3] / 1024;
$results['ram']['buffers'] = $tmptb[4] / 1024;
$results['ram']['cached'] = $tmptb[5] / 1024;
$results['ram']['t_used'] = $results['ram']['used']
- $results['ram']['cached']
- $results['ram']['buffers'];
$results['ram']['t_free'] = $results['ram']['total']
- $results['ram']['t_used'];
$results['ram']['percent'] = round(
($results['ram']['t_used'] * 100)
/ $results['ram']['total']);
}
if (preg_match("/Swap:\s+(.*)$/", $buf, $tmptb)) {
$tmptb = preg_split("/\s+/", $tmptb[1], 3);
$results['swap'] = array();
$results['swap']['total'] = $tmptb[0] / 1024;
$results['swap']['used'] = $tmptb[1] / 1024;
$results['swap']['free'] = $tmptb[2] / 1024;
$results['swap']['percent'] = round(($tmptb[1] * 100)
/ $tmptb[0]);
break;
}
}
fclose($fd);
}
else {
$results['ram'] = array();
$results['swap'] = array();
}
return $results;
}
// --- Retourne un tableau avec les informations sur chaque
// partition. Ces informations sont elles-mêmes stockées
// dans un tableau associatif
function infos_disque() {
$df = `/bin/df -kP`;
$mounts = split("\n", $df);
$fstype = array();
if ($fd = fopen("/proc/mounts", "r")) {
while ($buf = fgets($fd, 4096)) {
list($dev, $mpoint, $type) = preg_split("/\s+/", trim($buf), 4);
$fstype[$mpoint] = $type;
$fsdev[$dev] = $type;
}
fclose($fd);
}
for ($i = 1; $i < sizeof($mounts) - 1; $i++) {
$tmptb = preg_split("/\s+/", $mounts[$i], 6);
$results[$i - 1] = array();
$results[$i - 1]['disk'] = $tmptb[0];
$results[$i - 1]['size'] = $tmptb[1];
$results[$i - 1]['used'] = $tmptb[2];
$results[$i - 1]['free'] = $tmptb[3];
$results[$i - 1]['percent'] = $tmptb[4];
$results[$i - 1]['mount'] = $tmptb[5];
($fstype[$tmptb[5]]) ? $results[$i - 1]['fstype'] =
$fstype[$tmptb[5]] : $results[$i - 1]['fstype'] =
$fsdev[$tmptb[0]];
}
return $results;
}
// --- fonction de formattage
function format_ko($ko, $decimales = 2) {
if ($ko > 1048576) {
$result = sprintf("%." . $decimales . "f", $ko / 1048576);
$result .= ' Go';
}
elseif ($ko > 1024) {
$result = sprintf("%." . $decimales . "f", $ko / 1024);
$result .= ' Mo';
}
else {
$result = sprintf("%." . $decimales . "f", $ko);
$result .= ' Ko';
}
return $result;
}
}
?>
|
|
|
 |
|