Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1452 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Obtenir utilisation CPU et RAM

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Obtenir utilisation CPU et RAM

n°640371
Furaxx
Posté le 12-02-2004 à 14:14:57  profilanswer
 

Question simple (et peut-être conne, je ne sais pas encore ;)):
 
Est-il possible en PHP d'obtenir l'utilisation RAM sur le serveur ainsi que la charge CPU, un peu à la manière de disk_free_space() pour le DD?
 
Je suis sur un serveur dédié et je peux utiliser exec(); s'il le faut.
 
merci!

mood
Publicité
Posté le 12-02-2004 à 14:14:57  profilanswer
 

n°640477
Furaxx
Posté le 12-02-2004 à 14:56:57  profilanswer
 

Bon, je devrais pouvoir ressortir des trucs de la commande "top -n 1" normalement, mais seule soucis, je ne sais pas me serveur de la commande passthru, qui est apparemment sensé me ressortir le résultat...
De même avec exec() qui normalement place les lignes de résultat dans un tableau, là, le tableau est désepérément vide... une solution?

n°640493
Furaxx
Posté le 12-02-2004 à 15:06:24  profilanswer
 

Aller zou, dernière nouvelle: si je fais un exec('ls -n', $test);
Mon tableau $test est bien rempli comme il faut, je dois avoir un soucis avec le "top -n 1" je pense...
 
N'empêche que si certains savent comment faire sans utiliser de "exec" ou autre, je suis preneur. :)

n°640534
Furaxx
Posté le 12-02-2004 à 15:24:58  profilanswer
 

Et je me réponds à moi-même: il faut mettre "top -b -n 1" pour que ça fonctionne.
 
... Y n'empêche que ma question posée à l'origine tiens toujours: la possibilité de le faire directement avec une fonction PHP?

n°640537
uriel
blood pt.2
Posté le 12-02-2004 à 15:26:47  profilanswer
 

si tu trouves, je suis interessé :D


---------------
IVG en france
n°640617
Furaxx
Posté le 12-02-2004 à 16:06:58  profilanswer
 

Merde, tout content de voir un petit drapeau bleu, je me précipite dessus... et... rien. :D
 
D'après les recherches que j'ai fait bien c'est plutôt mal barré, je suis donc parti sur l'utilisation de "top", mais ce qui est con c'est que cette commande met environ 1-2s pour se lancer et du coup, l'affichage de la page en est d'autant retardé.
Moi qui pensais afficher ça lorsque j'arrivais sur l'interface d'admin de mon site, ben je vais plutôt faire une page à part je pense.
 
Donc là, j'en suis à la génération d'un png qui montre une jauge verte qui se remplie de rouge en fonction de l'utilisation CPU, avec écrit en surimpression le pourcentage exact d'utilisation CPU.
Je fais maintenant la même chose avec l'utilisation de la RAM et du swap, j'ai déjà fait le DD. Donc si avoir le script tout cuit t'intéresse, ben je le posterai ici quand je l'aurai terminé. ;)

n°640716
Furaxx
Posté le 12-02-2004 à 17:37:22  profilanswer
 

Aller zou, si y'en a que ça intéresse, voici donc.
On peut certainement faire plus simple, mais je ne connais GD que depuis quelques jours...
 

<?
 Header("Content-type: image/png" );
 exec('top -b -n 1', $test);
 
 $cpu = $test[4];
 $mem = $test[5];
 $swap = $test[7];
 
 /* UTILISATION CPU */
 $cpu = substr($cpu, 11, strpos($cpu, '%')-11);
 $img = imagecreate(200, 160);
 $contour = imagecolorallocate($img, 0, 0, 0);
 $vide = imagecolorallocate($img, 0, 150, 0);
 $plein = imagecolorallocate($img, 200, 0, 0);
 $blanc = imagecolorallocate($img, 255, 255, 255);
 imagefill($img, 0, 0, $blanc);
 imagefilledrectangle($img, 0, 20, 199, 39, $vide);
 $remplissage = round(2*$cpu, 0);
 imagefilledrectangle($img, 0, 20, $remplissage, 39, $plein);
 imageline($img, 0, 20, 0, 39, $contour);
 imageline($img, 0, 20, 199, 20, $contour);
 imageline($img, 0, 39, 199, 39, $contour);
 imageline($img, 199, 20, 199, 39, $contour);
 imagettftext($img, 8, 0, 60, 18, $contour, './include/font/arial.ttf', 'Utilisation CPU :');
 imagettftext($img, 6, 0, 80, 33, $blanc, './include/font/hooge.ttf', $cpu.' %');
 
 
 /* UTILISATION RAM */
 $mem_totale = substr($mem, 4, strpos($mem, 'k av')-4);
 $mem_util = substr($mem, strpos($mem, 'av, ')+4, strpos($mem, 'k used')-(strpos($mem, 'av, ')+4));
 imagefilledrectangle($img, 0, 60, 199, 79, $vide);
 $remplissage = round(200*$mem_util/$mem_totale, 0);
 imagefilledrectangle($img, 0, 60, $remplissage, 79, $plein);
 imageline($img, 0, 60, 0, 79, $contour);
 imageline($img, 0, 60, 199, 60, $contour);
 imageline($img, 0, 79, 199, 79, $contour);
 imageline($img, 199, 60, 199, 79, $contour);
 imagettftext($img, 8, 0, 60, 58, $contour, './include/font/arial.ttf', 'Utilisation RAM :');
 imagettftext($img, 6, 0, 90, 73, $blanc, './include/font/hooge.ttf', round(100*$mem_util/$mem_totale, 0).' %');
 
 /* UTILISATION SWAP */
 $swap_total = substr($swap, 5, strpos($swap, 'k av')-5);
 $swap_util = substr($swap, strpos($swap, 'av, ')+5, strpos($swap, 'k used')-(strpos($swap, 'av, ')+5));
 imagefilledrectangle($img, 0, 100, 199, 119, $vide);
 $remplissage = round(200*$swap_util/$swap_total, 0);
 imagefilledrectangle($img, 0, 100, $remplissage, 119, $plein);
 imageline($img, 0, 100, 0, 119, $contour);
 imageline($img, 0, 100, 199, 100, $contour);
 imageline($img, 0, 119, 199, 119, $contour);
 imageline($img, 199, 100, 199, 119, $contour);
 imagettftext($img, 8, 0, 60, 98, $contour, './include/font/arial.ttf', 'Utilisation Swap :');
 imagettftext($img, 6, 0, 90, 113, $blanc, './include/font/hooge.ttf', round(100*$swap_util/$swap_total, 0).' %');
 
 /* UTILISATION DISQUE DUR */
 $espace_libre = round((disk_free_space('/'))/1048576, 1);
 $espace_total = round((disk_total_space('/'))/1048576, 1);
 imagefilledrectangle($img, 0, 140, 199, 159, $vide);
 $remplissage = 200*($espace_total-$espace_libre)/$espace_total;
 imagefilledrectangle($img, 0, 140, $remplissage, 159, $plein);
 imageline($img, 0, 140, 0, 159, $contour);
 imageline($img, 0, 140, 199, 140, $contour);
 imageline($img, 0, 159, 199, 159, $contour);
 imageline($img, 199, 140, 199, 159, $contour);
 imagettftext($img, 8, 0, 60, 138, $contour, './include/font/arial.ttf', 'Espace disque :');
 imagettftext($img, 6, 0, 90, 153, $blanc, './include/font/hooge.ttf', round(100*($espace_total-$espace_libre)/$espace_total, 0).' %');
 
 imagepng($img);
 imagedestroy($img);
?>

n°640734
sub1
Posté le 12-02-2004 à 17:50:25  profilanswer
 

Salut,
 
au lieu d'utiliser top, tu peux peut etre recupérer tes infos via ps, qui affiche un instantané des infos processeurs (plus rapide que top) ou mpstat. Pour la RAM, le mieux doit être de lister le fichier /proc/meminfo....
 
Je crois qu'il y a un autre process (bas niveau) qui envoie les infos systèmes à mpstat, ps et top, mais je ne me rappelle plus son nom...

n°640742
Furaxx
Posté le 12-02-2004 à 18:00:23  profilanswer
 

je vais essayer ps et autre voir ce que ça donne alors oui, merci. :)
 
Pour proc/meminfo j'y ai déjà regardé, mais le prob est que le fichier fait 0 octet... tout comme cpuinfo.
Je sais pas si c'est normal et que le fichier se "remplit" lorsqu'on va le lire???

n°640753
uriel
blood pt.2
Posté le 12-02-2004 à 18:05:28  profilanswer
 

justement, si tu peux lire ces données (cf droit de lecture), /proc/... est mieux et moins exigeant pour le serveur :jap:


---------------
IVG en france
mood
Publicité
Posté le 12-02-2004 à 18:05:28  profilanswer
 

n°640759
Furaxx
Posté le 12-02-2004 à 18:10:32  profilanswer
 

En fait, étant donné que les fichiers ont une taille à 0 octet, je ne me suis pas posé la question de les lire. ;)

n°640764
uriel
blood pt.2
Posté le 12-02-2004 à 18:13:22  profilanswer
 

Furaxx a écrit :

En fait, étant donné que les fichiers ont une taille à 0 octet, je ne me suis pas posé la question de les lire. ;)


 
bah sur Linux, je viens de verifié, mon fichier fais bien 0 k
mais si je fais :


[root@ocinh0 proc]# cat cpuinfo  
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 2
model name      : Intel(R) Xeon(TM) CPU 2.80GHz
stepping        : 9
cpu MHz         : 2790.786
cache size      : 512 KB
physical id     : 0
siblings        : 2
runqueue        : 0
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
bogomips        : 5570.56


 
pareil pour les autres  :jap:


---------------
IVG en france
n°640841
sub1
Posté le 12-02-2004 à 19:26:11  profilanswer
 

/proc est un systeme de fichier virtuel, l'ensemble du dossier /proc fait 0 octet. In ne s'agit en fait pas de fichiers réguliers mais d'une interface d'accès au périphériques systèmes et normalement tout le monde peut y accéder en lecture...

n°640868
Furaxx
Posté le 12-02-2004 à 19:47:44  profilanswer
 

Ok, ben je vais reprendre ça avec les "proc", merci pour l'info. :)
 
Je mettrai le code ici ensuite si d'autres comme moi se posent la même question, il auront un truc tout fait. ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Obtenir utilisation CPU et RAM

 

Sujets relatifs
[PHP] Problème update[C++] utilisation de libc
Comment désactiver le mail de confirmation sous PHP-NUKE 7 ???????????[PHP] [MYSQL] requête sur partie de la date?
[C++] Utilisation de librairies statiques VC++ sous Builder C++[PHP] Manière de crypter efficacement un mot de passe
pseudo-frame en PHP, problémeAide sur les timings en PHP
[PHP_SPIP] et javascript...Session PHP
Plus de sujets relatifs à : [PHP] Obtenir utilisation CPU et RAM


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR