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

  FORUM HardWare.fr
  Programmation
  PHP

  Test résultat de commande DOS

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Test résultat de commande DOS

n°2202725
lp77
Posté le 12-09-2013 à 16:17:55  profilanswer
 

Bonjour,
 
j'aimerai dans mon script en PHP continuer le déroulement uniquement si l'importation des fichiers de back UP dans la BDD s'est bien déroulée :

Code :
  1. $db = new PDO('mysql:host=localhost;dbname='.$bdd_centralisee.'', $utilisateur, $password);
  2. $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
  3. // Ouvre un dossier, et liste tous les fichiers
  4. if (is_dir($repertoire_sauvegarde)) {
  5.     if ($dh = opendir($repertoire_sauvegarde)) {
  6.         while (($file = readdir($dh)) !== false) {
  7.             echo "$file";
  8.    $commande = "".$repertoire_mysql." -h localhost -u ".$utilisateur." -p".$password." ".$bdd_source." < ".$repertoire_sauvegarde."".$file."";
  9.    $CR_exec = shell_exec($commande);
  10. try {
  11.     // Transaction  
  12.     $db->beginTransaction();
  13.     // Mes requêtes ....)


 
J'aimerai donc qu'on entre dans le bloc TRY uniquement si la commande permettant d'importer un fichier de sauvegarde de BDD ne renvois pas d'erreurs (je sais le faire en batch, mais je dois le faire en PHP ...).
 
Merci.


Message édité par lp77 le 12-09-2013 à 16:18:32
mood
Publicité
Posté le 12-09-2013 à 16:17:55  profilanswer
 

n°2202750
skeye
Posté le 12-09-2013 à 18:02:25  profilanswer
 

http://php.net/manual/fr/function.shell-exec.php

 
Citation :

Valeurs de retour

 

La sortie de l'exécution de la commande ou NULL si une erreur survient.

Message cité 1 fois
Message édité par skeye le 12-09-2013 à 18:02:37

---------------
Can't buy what I want because it's free -
n°2202760
lp77
Posté le 12-09-2013 à 20:24:32  profilanswer
 

Mais comment tester si l'importation de la BDD en DOS a bien été faite ou non, quelle message est renvoyé au PHP ?
Merci.

n°2202764
skeye
Posté le 12-09-2013 à 20:47:19  profilanswer
 

si ta commande renvoie quelque chose, tu l'as en retour de shell_exec. A toi de traiter ce retour.


---------------
Can't buy what I want because it's free -
n°2202819
lp77
Posté le 13-09-2013 à 11:26:19  profilanswer
 

Lorsque j'affiche la variable CR_exec il n'y a rien :

Code :
  1. $commande = "".$repertoire_mysql." -h localhost -u ".$utilisateur." -p".$password." ".$bdd_source." < ".$repertoire_sauvegarde."".$file."";
  2.    $CR_exec = shell_exec($commande);


Alors qu'en tapant la commande en DOS on a 1 ou 0 selon le fait qu'il y ait une erreur ou non.
Avez vous une idée pour savoir comment je pourrai contrôler le fait que l'importation d'une BDD se déroule avec succés ou non ?
Merci.

n°2202820
skeye
Posté le 13-09-2013 à 11:28:11  profilanswer
 

lp77 a écrit :

Lorsque j'affiche la variable CR_exec il n'y a rien


 

skeye a écrit :

NULL si une erreur survient.



---------------
Can't buy what I want because it's free -
n°2202821
lp77
Posté le 13-09-2013 à 12:05:13  profilanswer
 

J'ai ressayé sans mettre d'erreurs, ça affiche toujours rien.

n°2202822
skeye
Posté le 13-09-2013 à 12:07:40  profilanswer
 

tu l'affiches comment?


---------------
Can't buy what I want because it's free -
n°2202824
lp77
Posté le 13-09-2013 à 12:13:29  profilanswer
 

echo " $CR_exec";

n°2202833
skeye
Posté le 13-09-2013 à 13:12:03  profilanswer
 

var_dump($CR_exec) dit quoi?


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 13-09-2013 à 13:12:03  profilanswer
 

n°2202840
lp77
Posté le 13-09-2013 à 13:38:07  profilanswer
 

Il affiche NULL dans tous les cas (erreurs ou OK).

n°2202841
skeye
Posté le 13-09-2013 à 13:47:56  profilanswer
 

ok, donc ce que t'affiche DOS n'est pas une sortie de ta commande mais plutôt le code de retour.
Tu devrais probablement utiliser plutôt exec() ou system() et récupérer ça dans le 3eme paramètre optionnel : http://www.php.net/manual/fr/function.exec.php / http://www.php.net/manual/fr/function.system.php


Message édité par skeye le 13-09-2013 à 13:49:24

---------------
Can't buy what I want because it's free -
n°2202848
lp77
Posté le 13-09-2013 à 14:28:35  profilanswer
 

Ok merci, ça fonctionne, il renvoie 0 ou 1.
Maintenant je voudrai faire une condition si c'est vrai je continue sinon j'arrête, j'ai pensé au if else mais ça ne fonctionne pas apparemment.

Code :
  1. $commande = "".$repertoire_mysql." -h localhost -u ".$utilisateur." -p".$password." ".$bdd_source." < ".$repertoire_sauvegarde."".$file."";
  2.     $commande = system($commande, $retval);
  3.     var_dump($retval);

n°2202849
lp77
Posté le 13-09-2013 à 14:32:36  profilanswer
 

Non j'ai parlé trop vite, ça fonctionne.
Merci.


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

  Test résultat de commande DOS

 

Sujets relatifs
[Ada][Gnu/Linux][Xterm] Non_Blocking_Spawn: la commande n'est executéeUne sorte de read next en MS-DOS
Lancer un script Python Par la commande Batch "SCHTASKS"Executer un script python par la commande Batch SCHTASKS
afficher "/?" via la commande ECHOOuverture Terminal Linux + Ligne de commande
Probleme JAVA en ligne de commandeCommande cp dans un script PERL
Requête UPDATE aucun résultatcommande su
Plus de sujets relatifs à : Test résultat de commande DOS


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