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

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Probleme avec exec() positionné dans une boucle...[resolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Probleme avec exec() positionné dans une boucle...[resolu]

n°278358
raph93
Posté le 02-01-2003 à 14:34:35  profilanswer
 

Bonjour ,  
 
je ne comprends pas pkoi mon exec() ne s'execute ke dans le 1er tour de boucle, alors k'il devrait s'executer a chaque tour  :(  
 
Voici mon code, si vous pouver m'eclairer  :jap:  :jap:  
 

Code :
  1. ...
  2. while($row = mysql_fetch_array($y)) {
  3. echo '<tr><td align=center>'.ucfirst($row['ip']).'</td>';
  4. echo '<td align=center>'.ucfirst($row['model']).'</td>';
  5. echo '<td align=center>'.ucfirst($row['serial']).'</td>';
  6. echo '<td align=center>'.ucfirst($row['baie']).'</td>';
  7. echo '<td align=center>'.ucfirst($row['site']).'</td>';
  8. echo '<td align=center>'.ucfirst($row['os']).'</td>';
  9. exec("ping -n 1 ".$row['ip']."", $ping);
  10. while (list ($key, $val) = each ($ping)) {
  11.  if ($key == '6') {
  12.    if (ereg("0%" , $val) == TRUE) {
  13.     echo '<td align=center>UP</td>'; }
  14.    if (ereg("100%" , $val) == TRUE)  {
  15.     echo '<td align=center>DOWN</td>'; }
  16.      }
  17.  }
  18. echo '<td align=center>'.ucfirst($row['description']).'</td>';
  19. echo '<td align=center><input type=checkbox name=oui[] value='.$row['serveur_id'].'></td>';
  20. echo '<td align=center><a href="modif_serveur.php?status=3&serveur_id='.$row['serveur_id'].'">modifier</a></td></tr>';
  21. }


Message édité par raph93 le 03-01-2003 à 16:21:19

---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
mood
Publicité
Posté le 02-01-2003 à 14:34:35  profilanswer
 

n°278437
raph93
Posté le 02-01-2003 à 16:42:03  profilanswer
 


 [:athlonmp]


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
n°278456
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 02-01-2003 à 17:40:10  profilanswer
 

je crois qu'il faut que tu mette == et non = dans la condition des deux while

n°278470
raph93
Posté le 02-01-2003 à 17:59:33  profilanswer
 

forummp3 a écrit :

je crois qu'il faut que tu mette == et non = dans la condition des deux while


 
en fait ca marche bien pour ttes les lignes mais y'a juste l'exec() k'ait executé une seul fois  :(  


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
n°278581
beleg
黑社會
Posté le 02-01-2003 à 23:29:50  profilanswer
 

pkoi tu penses quil est executé quuen seule fois ?
tu las affiché $ping a chaque tour ?

n°278641
raph93
Posté le 03-01-2003 à 09:27:26  profilanswer
 

beleg a écrit :

pkoi tu penses quil est executé quuen seule fois ?
tu las affiché $ping a chaque tour ?


 
ouais j'affiche le resultat a chaque tour , il sffiche que lors de la 1ere ligne  :(


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
n°278692
beleg
黑社會
Posté le 03-01-2003 à 11:52:44  profilanswer
 

http://www.php.net/manual/en/function.exec.php
 
je pense quil y a la solution, je poste ce que jai fait a mon retour

n°278705
beleg
黑社會
Posté le 03-01-2003 à 12:30:49  profilanswer
 

raph93 a écrit :


 
ouais j'affiche le resultat a chaque tour , il sffiche que lors de la 1ere ligne  :(  


 

Code :
  1. <?php
  2. for ($i=0;$i<5;$i++)
  3.    {
  4.      exec("ping -n 1 www.google.fr", $ping);
  5.      echo "PING <<  ".$ping["6"]."  >><br><br>" ;
  6.      print_r($ping);
  7.      echo "<hr>";
  8.    
  9.      while (list ($key, $val) = each ($ping)) {
  10.      
  11.         if ($key == '6') {
  12.        
  13.             if (ereg("0%" , $val) == TRUE) {
  14.          
  15.              echo 'UP'; }
  16.        
  17.             if (ereg("100%" , $val) == TRUE)  {
  18.          
  19.              echo 'DOWN'; } 
  20.        
  21.             }
  22.       }
  23.       echo "<hr>";
  24.       //unset($ping);
  25.   }
  26.   ?>

n°278711
raph93
Posté le 03-01-2003 à 12:50:40  profilanswer
 

Probleme resolu mais g pas les droit pour editer mon topic
 
en fait avant de lancer la boucle je devais rajouter ça :
 

Code :
  1. while($row = mysql_fetch_array($y)) {
  2. $ping = $ping.$row['serveur_id'];
  3. exec("ping -n 1 ".$row['ip']."", $ping);
  4. while (list ($key, $val) = each ($ping)) {
  5.  if ($key == '6') {
  6.    if (ereg(" 0%" , $val) == TRUE) {
  7.    echo '<td align=center >UP</td>'; }
  8.    else {
  9.     echo '<td align=center bgcolor=#FFFFFF>DOWN</td>'; }
  10.     }


Message édité par raph93 le 03-01-2003 à 12:52:31

---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
n°278715
beleg
黑社會
Posté le 03-01-2003 à 13:03:18  profilanswer
 

tu peux mexpliquer le pkoi de cet ajout ?
 
$ping = $ping.$row['serveur_id'];
     
   

mood
Publicité
Posté le 03-01-2003 à 13:03:18  profilanswer
 

n°278811
raph93
Posté le 03-01-2003 à 15:31:09  profilanswer
 

beleg a écrit :

tu peux mexpliquer le pkoi de cet ajout ?
 
$ping = $ping.$row['serveur_id'];
     
     


 
comme ça la variable $ping est unique à chaque tour de boucle,  
 
ca faisait 2 jours que je me prenais la tete là dessus , le principal maintenant c'est que ca marche
 
 :jap:


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
n°278819
beleg
黑社會
Posté le 03-01-2003 à 15:35:46  profilanswer
 

deux jours alors que c marqué dans le doc sur php.net :
il faut faire un unset($ping).
 
ta solution de concatener un tableau ($ping) avec une chaine de caracteres, cest un peu nimp.
 
et pkoi pas lire $ping[6] directement au lieu de parcourir tt le tableau pr rechercher la key 6 ???

n°278830
raph93
Posté le 03-01-2003 à 16:06:20  profilanswer
 

beleg a écrit :

deux jours alors que c marqué dans le doc sur php.net :
il faut faire un unset($ping).
 
ta solution de concatener un tableau ($ping) avec une chaine de caracteres, cest un peu nimp.
 
et pkoi pas lire $ping[6] directement au lieu de parcourir tt le tableau pr rechercher la key 6 ???


 
Bon ok , j'ai fait une connerie jvais essayer ta methode  :jap:  
 
jvais refaire des test mais bizarrement la 1ere methode genere plus vite le resultat  :heink:  
 
Ca me parait bizarre, etant donnée que t'as solution est bien meilleur sur le papier
 

  • 1e methode :


Temps de genration de la page (1ere Methode) : 1.600 secondes (17 machines à pinger)
 

Code :
  1. while($row = mysql_fetch_array($y)) {
  2. $ping = $ping.$row['serveur_id'];
  3. exec("ping -n 1 ".$row['ip']."", $ping);
  4.      while (list ($key, $val) = each ($ping)) {
  5.  if ($key == '6') {
  6.    if (ereg(" 0%" , $val) == TRUE) {
  7.   echo '<td align=center >UP</td>'; }
  8.    else {
  9.           echo '<td align=center bgcolor=#FFFFFF>DOWN</td>'; }
  10.            }
  11.          
  12.            }
  13.            }


 
 

  • 2eme Methode :


Temps de genration de la page (2eme Methode) : 2.135 secondes (17 machines à pinger)
 

Code :
  1. while($row = mysql_fetch_array($y)) {
  2. exec("ping -n 1 ".$row['ip']."", $ping);
  3. $val = $ping[6];
  4.    if (ereg(" 0%" , $val) == TRUE) {
  5.   echo '<td align=center >UP</td>'; }
  6.    else {
  7.           echo '<td align=center bgcolor=#FFFFFF>DOWN</td>'; }
  8.            }


Message édité par raph93 le 03-01-2003 à 16:19:59

---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
n°278836
raph93
Posté le 03-01-2003 à 16:21:38  profilanswer
 

:bounce:
 
apres de nombreux test ta methode affiche un temps d'execution > 1 minutes , je gardes donc ta methode  :jap:


Message édité par raph93 le 03-01-2003 à 16:24:34

---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
n°278840
beleg
黑社會
Posté le 03-01-2003 à 16:34:10  profilanswer
 

vu que tu fais des ping, ca influe un poil sur le temps dexec.
noublie pas le unset sinon, tu regardes toujours le resultat du premier ping car les differents exec ping sont rajoutés a la fin de $ping.
 
 [:nemesis7]

n°278843
raph93
Posté le 03-01-2003 à 16:38:14  profilanswer
 

beleg a écrit :

vu que tu fais des ping, ca influe un poil sur le temps dexec.
noublie pas le unset sinon, tu regardes toujours le resultat du premier ping car les differents exec ping sont rajoutés a la fin de $ping.
 
 [:nemesis7]  


 
en fait j'ai pas besoin des temps d'execution, je regarde juste k'activité de la machine (0% ou 100% de perte du packet envoyé)
 
j'ai pas mis le unset() mais ca a l'air de fonctionner correctement quand je met une ip non-pingable , elle s'affiche en blanc alors ke les autre sont Ok
 
tout m'a l'air bon pour le moment  :hello:


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
n°278844
raph93
Posté le 03-01-2003 à 16:39:58  profilanswer
 

raph93 a écrit :

:bounce:
 
apres de nombreux test ta methode affiche un temps d'execution > 1 minutes , je gardes donc ta methode  :jap:  


 
j'ai marqué n'importe quoi  :pt1cable:  
 
je rectifie :  
 
apres de nombreux test ta methode affiche un temps d'execution < 1 seconde , je gardes donc ta methode  :jap:  


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
n°278848
beleg
黑社會
Posté le 03-01-2003 à 16:53:40  profilanswer
 

curieux, je maintiens pr le unset comme testé ici :
 
http://nosgoth.dyndns.org/test/test.php
 

Code :
  1. <?php
  2. exec("ping -n 1 www.google.fr", $ping);
  3. echo "<hr>www.google.fr : ";
  4. $val = $ping[6];
  5. if (ereg(" 0%" , $val) == TRUE) {
  6.     echo 'UP'; }
  7. else {
  8. echo 'DOWN'; }
  9. exec("ping -n 1 www.gooogle.fr", $ping);
  10. echo "<hr>www.gooogle.fr : ";
  11. $val = $ping[6];
  12. if (ereg(" 0%" , $val) == TRUE) {
  13.     echo 'UP'; }
  14. else {
  15. echo 'DOWN'; }
  16. unset($ping);   
  17. exec("ping -n 1 www.gooogle.fr", $ping);
  18. echo "<hr>www.gooogle.fr : ";
  19. $val = $ping[6];
  20. if (ereg(" 0%" , $val) == TRUE) {
  21.     echo 'UP'; }
  22. else {
  23. echo 'DOWN'; }
  24. exec("ping -n 1 www.google.fr", $ping);
  25. echo "<hr>www.google.fr : ";
  26. $val = $ping[6];
  27. if (ereg(" 0%" , $val) == TRUE) {
  28.     echo 'UP'; }
  29. else {
  30. echo 'DOWN'; }
  31. ?>


 
http://nosgoth.dyndns.org/test/test.php


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

  [PHP] Probleme avec exec() positionné dans une boucle...[resolu]

 

Sujets relatifs
[PHP] Récupérer un login htaccess dans une variable ?faire un calcul sur une base [ résolu ]
[CSS] Contourner le problème "fixed" pour le défilement avec IE[PHP] Création du fichier
session [resolu]PHP/MySQL et CDDB........
incorporer la CDDB dans MySQL avec PHP[PHP/MySQL] Probable erreur de débutant.
[TCL] Problême d'encodage de chaine...[PHP] Travail sur le nom même d'une variable
Plus de sujets relatifs à : [PHP] Probleme avec exec() positionné dans une boucle...[resolu]


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