Signaler

Détecter automatiquement les disques durs d'un serveur

Posez votre question difno - Dernière réponse le 4 avril 2017 à 14:11 par dinfo
Bonjour,

Je voulais afficher dans un tableau la taille, l'espace libre ... de tous les disques durs d'un serveur mais les noms des disques durs ne sont pas stables c'est à dire on peut ajouter ou retirer des disques durs et du coup j'ai pensé à mettre ce code là:
    <?php 
 $data = array();
   $disques = array ("A:", "B:", "C:", "D:", "E:", "F:", "G:", "H:", "I:", "J:", "K:", "L:",          "M:", "N:", "O:", "P:", "Q:", "R:", "S:", "T:", "U:", "V:", "W:", "X:", "Y:", "Z:");
    // $disques = array ("C:", "G:");

$i =0;
 foreach($disques as $disque){
         //pour ajouter dans le tableau que les disques qui existent dans ce serveur
 if(!empty(disk_total_space($disque))){ 
        $disp = disk_free_space($disque);
 $total = disk_total_space($disque); 


$data[$i]['Nom_disque'] = $disque;
 $data[$i]['Taille_disponible'] = _format_bytes($disp);
    $data[$i]['Taille_utilise'] = _format_bytes($total - $disp);
        $data[$i]['Taille_total'] = _format_bytes($total);
        $data[$i]['Utilisation'] = number_format((_format_bytes(($total - $disp)                   /$total)) * 100, 0, ".", " ") ;
        $i++;

} 
}

EDIT : AJout des balises de code

Mais cette fonction 'disk_total_space($disque)' m'affiche un erreur quand il ne trouve pas le disque qui correspond aux alphabets que j'ai cités dans le tableau des disques :/

Je me suis bloquée là et je ne trouve pas une solution pour m'avancer ;( s'il vous plait j'ai besoins vraiment de votre aide et merci d'avance pour cela.
Afficher la suite 
Utile
+0
plus moins
Bonjour,

TU n'as qu'a vérifier avant si le "disque" existe ou non.
http://php.net/manual/en/function.is-dir.php
dinfo- 21 mars 2017 à 10:50
Bonjour ,
Merci pour la réponse je vais essayer cette fonction :)
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour,
Merci pour la fonction il fonctionne très bien :)
Mais il m'affiche toujours cette erreur et j'en savais pas pourquoi ! :
Warning: disk_total_space(): in C:\wamp\www\***.php on line 21
Voici le code:


 <?php 
   $data = array();
   $disques = array ("A:", "B:", "C:", "D:", "E:", "F:", "G:", "H:", "I:", "J:", "K:", "L:", "M:", "N:", "O:", "P:", "Q:", "R:", "S:", "T:", "U:", "V:", "W:", "X:", "Y:", "Z:");
    // $disques = array ("C:", "G:");

    $i =0;
   foreach($disques as $disque){
    if(is_dir($disque)){
 //pour ajouter dans le tableau que les disques actifs
  if(disk_total_space($disque)!=false){ 
           $disp = disk_free_space($disque);
    $total = disk_total_space($disque); 

 
         $data[$i]['Nom_disque'] = $disque;
    $data[$i]['Taille_disponible'] = _format_bytes($disp);
     $data[$i]['Taille_utilise'] = _format_bytes($total - $disp);
         $data[$i]['Taille_total'] = _format_bytes($total);
         $data[$i]['Utilisation'] = number_format((_format_bytes(($total -          $disp) /$total)) * 100, 0, ".", " ") ;
    $i++;

 } 
 }
} 

EDIT : Ajout des balises de code (... encore.... )

Merci d'avance pour votre aide.
Cordialement ;
dinfo- 27 mars 2017 à 18:43
Oui j'ai lu déjà la doc mais les disques ne sont pas distants ?!
Répondre
jordane45 18085Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 20 août 2017 Dernière intervention - 27 mars 2017 à 18:48
quel est le message d'erreur EXACT et COMPLET ?
Répondre
dinfo- 27 mars 2017 à 18:52
Voici le message d'erreur:

( ! ) Warning: disk_total_space(): in C:\wamp\www\mondossier\disques.php on line 21
Call Stack
# Time Memory Function Location
1 0.0010 143880 {main}( ) ..\disques.php:0
2 0.0200 272384 disk_total_space ( ) ..\disques.php:21
Répondre
jordane45 18085Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 20 août 2017 Dernière intervention - 27 mars 2017 à 19:06
Regarde si en modifiant le limite de temps ça ne corrigerait pas ton souci
http://php.net/manual/fr/function.set-time-limit.php
Répondre
dinfo- 4 avril 2017 à 14:11
D'accord merci pour la réponse, j'ai cherché sur la solution que vous m'avez proposé sans résultat ou peut-être que je ne sais pas comment utiliser la fonction bon bref j'ai trouvé une solution puisque mon code fonctionne bien sauf l'erreur qui s'affiche, j'ai mis @ devant la fonction qui a causé l'affichage de l'erreur comme ainsi et l'erreur ne s'affiche plus ;) :

//pour ajouter dans le tableau que les disques actifs
if (@disk_total_space($disque)!=false){
$disp = disk_free_space($disque);
$total = disk_total_space($disque);

ps:merci beaucoup pour votre aide :)
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !