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

Langage PHP Discussion :

[Système] Blocage lors du lancement d'un script


Sujet :

Langage PHP

  1. #1
    tintin22
    Invité(e)
    Par défaut [Système] Blocage lors du lancement d'un script
    Salut à tous,
    j'ai une page PHP qui contient un bouton qui lance un script Bash.
    Mon probleme reside dans le fait que ce script contient une boucle (traitements dont les resultats seront affichés sur la page) et que cette dernière bloque ma page web (ce qui est normal). J'aimerais donc que mon script se lance sans pour autant bloquer ma page, comment faire ? AJAX ?

    Merci d'avance.

  2. #2
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 215
    Points : 256
    Points
    256
    Par défaut
    Salut,

    voui, tu peux sois utiliser un objet XMLHttprequest pour envoyer une requête à la page effectuant le script php, ensuite tu récupères les infos pour les traiter

    sinon tu peux utiliser une iframe cachée, et tu traites les informations de l'iframe avec js

  3. #3
    tintin22
    Invité(e)
    Par défaut
    Le script n'est pas dans une page, le script est ecrit en Bash, la page lance uniquement ce script. Je sais comment recuperer les données mon probleme c'est le blocage !

  4. #4
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 215
    Points : 256
    Points
    256
    Par défaut
    hum ?

    si tu postes ici c'est que tu n'as pas la réponse, donc prend un minimun de temps pour comprendre et lire correctement ce que les bénévoles de ce forum écrivent pour t'aider ! ...

    il me semble que pour exécuter une commande bash à partir de php, tu as besoin d'executer une page PHP qui inclut les commandes permettant l'exécution d'un script bash ...

    (à moins d'utiliser php en mode console ...m'enfin ca n'a pas l'air d'être ton cas)

    comme je te le disais en utilisant le modèle Ajax, tu peux envoyer des informations au serveur sans bloquer la page utilisateur... principe de l'envoi des données en mode asynchrone.

    sahid

  5. #5
    tintin22
    Invité(e)
    Par défaut
    desolé si j'etais pas très clair !

    Citation Envoyé par sahid
    il me semble que pour exécuter une commande bash à partir de php, tu as besoin d'executer une page PHP qui inclut les commandes permettant l'exécution d'un script bash ...
    J'ai besoin d'executer un script.

    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
     
    <? 
    	if ($_POST['Submit']=='Envoyer') 
    	{ 
    	 exec('/tmp/monscript'); 
    	 echo 'execution terminée';
     	}
    ?>	
     
    <html>
    <body>
    <form id="form1" name="form1" method="post" action="">
    <input type="submit" name="Submit" value="Envoyer" />
    </form>
    </body>
    </html>

  6. #6
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Bonjour,
    Et si tu le lances en tache de fond ?
    exec('/tmp/monscript&');
    Ta page ne sera plus bloquée.
    Ensuite, il te faudra surement adapter ton script pour en detecter la fin....

    Perso, j'ai utilisé deux facon de faire :
    Dans les deux cas, le script lancé en bash ecrit un fichier (vide) quand il demarre et un autre quand il termine.
    Ma premiere methode etait de creer deux liens :
    l'un qui lance le script (si le fichier start n'est pas detecte), l'autre qui recupere le resultat (si tu as cette necessité), uniquement s'il detecte le fichier stop. Ensuite, effacage de start et stop.

    Mon autre methode est un reload de la page toutes les x secondes et elle agit en fonction des fichiers start ou stop present...

    Bon courage,

    Sohnic

  7. #7
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Juste pour ma culture personnelle : que fait ce script bash pour avoir besoin d'être lancé par le serveur web ?

  8. #8
    tintin22
    Invité(e)
    Par défaut
    sohnic, j'ai essayé de le lancer en tâche de fond mais ça a donné la meme chose. La page reste bloquée jusqu'à ce que le script se termine ou jusqu'à ce que je l'arrête avec un kill et à ce moment là j'ai mon echo 'execution terminée' !
    Pour la detection de la fin .. la recuperation des traitements, y'a pas de problèmes !

    jml94, le script fait certains traitements (sur un serveur) qui seront affichés sur la page. L'utilisateur doit passer par la page car il n'a pas accès directement au serveur.

    En tout cas, merci pour vos reponses, je continue à chercher de mon coté.

  9. #9
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Alors a la place de ton exec essaies plutot :
    pclose(popen('tonscript&',"r"));

    Si ca n'est pas la syntaxe exacte regarde sur php.net.

    Effectivement, maintenant je ne procede plus que comme ca. Il doit y a voir une raison !

    Sohnic

  10. #10
    tintin22
    Invité(e)
    Par défaut
    Citation Envoyé par sohnic
    Alors a la place de ton exec essaies plutot :
    pclose(popen('tonscript&',"r"));
    ça marche !!!!

Discussions similaires

  1. [PowerShell] problème de droits lors du lancement d'un script powershell par gpo
    Par alexity dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 25/09/2012, 12h17
  2. [MySQL] Erreur lors de lancement d'un script PHP
    Par nb75009 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/11/2011, 16h30
  3. Réponses: 1
    Dernier message: 12/08/2009, 17h25
  4. errueur PLS-00103 lors de lancement de mon script
    Par PHPkoala dans le forum SQL
    Réponses: 11
    Dernier message: 23/01/2008, 10h09
  5. Réponses: 3
    Dernier message: 25/04/2007, 14h53

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