IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Fonction php qui ne rend pas la main dans le SHELL


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Homme Profil pro
    Responsable Applicatif / Développeur
    Inscrit en
    Mai 2007
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable Applicatif / Développeur

    Informations forums :
    Inscription : Mai 2007
    Messages : 495
    Points : 110
    Points
    110
    Par défaut Fonction php qui ne rend pas la main dans le SHELL
    Bonjour j'utilise une fonction php qui ne rend pas la main dans le SHELL.

    J'ai un fichier ServerTest.php ou je fais :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     echo "Test has failed : " . $aResult ["result"] ."\n";
               echo "Aucune reponse du serveur : Redemarrage ...  \n";
     
                passthru('/usr/local/sbin/S3DServer_script stop &  ');
    	exit;
    Le php exécute donc la fonction stop sur fichier S3DServer_script écrit en SHELL.

    la fonction est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
      stop)
    		if [ -e $S3DServerLife ]; then
    			echo "Stopping S3DServer Advanced 1.5.1 for Linux"
    			if ( kill -TERM `cat $S3DServerLife` ); then
    				for c in $(seq 1 5); do
    					if [ -e $S3DServerLife ]; then
    						echo -n "."
    						sleep 1
    					else
                            break
                        fi
    				done
    			fi
    			if [ -e $S3DServerLife ]; then
    				echo "S3DServer fail to stop properly - killing"
    				kill -KILL `cat $S3DServerLife`
    				rm $S3DServerLife
    				sleep 5
    			else
    				echo "done"
    			fi
    		else
    			echo "S3DServer is not running."
    			exit 7
    		fi
    	;;
    La fonction fonctionne correctement sauf que dans le shell lorqu'elle est éxécuté elle ne rend pas la main.

    Comment faire?

  2. #2
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 30
    Points : 33
    Points
    33
    Par défaut
    Déjà ton script est pas très bien écrit, prend l'habitude de mieux indenter le code.

    Ensuite, tes tests semblent souvent inutiles, par exemple tu testes un grand nombre de fois si "S3..." existe. À moins que tu aies un autre process concurrent qui supprime ce fichier, beaucoup de ces tests sont inutiles.

    À part cela, ton script semble correct. Donc je vais faire une hypothèse, un peu au hasard... Est-ce que tu ne te serai pas trompé dans le nom de la variable ?

    Si tu écris `cat $TOTO` et que TOTO ne contient rien, alors cat est appelé sans argument et attend des caractères sur son entrée standard...

    Cordialement,
    Cyril.

  3. #3
    Membre régulier
    Homme Profil pro
    Responsable Applicatif / Développeur
    Inscrit en
    Mai 2007
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable Applicatif / Développeur

    Informations forums :
    Inscription : Mai 2007
    Messages : 495
    Points : 110
    Points
    110
    Par défaut
    Ce n'est pas moi qui est écrit le code, je dois juste le corriger. en fait au départ il est bien indempté mais les lignes sont longues et dans le forum meme avec la balise code cela le déforme.

    Je n'ai pas l'impression de m'etre trompé de variable mais je vais regarder ça, c'est possible.

    Merci

  4. #4
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Bonsoir,

    Tout d'abord pour l'indentation, les tabulations sont souvent paramétrables dans les éditeurs (en général 4 espaces ou moins), alors qu'ici c'est 8 espaces, donc ça peut faire de (très) longues lignes. Personellement, je remplace les tab' par 4 espaces lorsque je passe du code ici. Et comme je te l'ai indiqué sur ton autre fil, faut pas mélanger tabulations et espaces dans le même code, ça donne des surprises lorsqu'on change d'éditeur.

    Pour ta question, je suis désolé mais je ne comprends pas ce que tu demandes. Essaie d'être clair, je ne connais pas ton projet.
    Par exemple:
    * Je lance le script XXX à partir d'un autre, YYY.
    * XXX fait ce qui est prévu.
    * Dans YYY je n'obtiens pas la valeur de retour de XXX.
    De cette manière je pourrais plus facilement te répondre: essaie de supprimer le & dans l'argument de la fonction passthru(), parce que ça lance le code XXX en parallèle et passthru() revient tout de suite, sans valeur de retour. Enfin, c'est un exemple de réponse.

    Une dernière chose: Quest-ce que ça fait chez toi "echo \n" ?
    Un problème bien posé est déjà résolu (H. Bergson).

Discussions similaires

  1. Exec : application qui ne rend pas la main
    Par Wilburdiskedur dans le forum Langage
    Réponses: 7
    Dernier message: 28/09/2011, 14h56
  2. Requete qui ne rend pas la main sous TOAD
    Par Lolitaaa dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/07/2010, 13h24
  3. Thread Python qui ne rend pas la main
    Par Dazdh dans le forum Général Python
    Réponses: 2
    Dernier message: 15/07/2008, 12h11
  4. [Batch] make qui ne rend pas la main au batch
    Par Pierre.g dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 09/07/2008, 19h04
  5. Script CMD qui ne rend pas la main
    Par ipeteivince dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 10/06/2005, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo