Pause exécution script PHP

Bonjour.

Ma question est plus précise que le titre:

J'aimerai qu'à un moment précis, le fichier PHP execute une commande donnée, qu'après 3 sec.

Voici une partie de mon fichier:

<?php
    print "L'arrêt de la vidéo est en cours.";
    exec("video.bat" /* On lance le script d'arrêt de vidéo */
    /* PATIENTER 3 SECONDES PUIS: */ 
    echo '<SCRIPT>javascript:window.close()</SCRIPT>'; /* On ferme la fenêtre */
?>


J'aimerai savoir si c'est possible.
Merci à vous.

5 réponses

  1. Bonjour index

    Je te propose d'utiliser la fonction
    sleep
    proposé par php. Voici votre code après l'insertion de la fonction:

    <?php
        print "L'arrêt de la vidéo est en cours.";
        exec("video.bat"); /* On lance le script d'arrêt de vidéo */
        sleep(3);//Attend 3 secondes
        echo '<SCRIPT>javascript:window.close()</SCRIPT>'; /* On ferme la       fenêtre */
    ?>


    Merci de me mettre un +1 si ma réponse vous à aidé :p
    1. Un grand merci, j'essaie tout de suite.
  2. Oups ...

    Parse error: syntax error, unexpected 'sleep' (T_STRING) in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\ts.php on line 4
    1. Bonjour,

      C'est sans doute dû a la non fermeture de la fonction Exec
    2. Regarde à ta ligne numéro 3 ! Tu as une parenthèse ouvert et qui ne se referme pas !
      exec("video.bat" /* On lance le script d'arrêt de vidéo */
    3. Attention aux erreurs de syntaxe dans le code proposé par Lerendra, il manque la parenthèse fermante et un point-virgule à l'instruction exec. Il manque également un point-virgule à la fin de l'instruction sleep.

      Montre nous ton code si tu n'arrives pas à corriger ces erreurs.
    4. @PitetJe n'avais pas fait attention à son erreur de syntaxe !^^ Je viens de le voir maintenant !^^
    5. C'est pas bien méchant, j'aurais dû faire attention en copiant/collant.
  3. Merci pour vos précisions.

    Voici mon fichier corrigé:

    <?php
        print "L'arrêt de la vidéo est en cours.";
        exec("ts.bat"); /* On lance le script d'arrêt de vidéo */
        sleep(3);//Attend 3 secondes
        echo '<SCRIPT>javascript:window.close()</SCRIPT>'; /* On ferme la fenêtre */
    ?>


    Mais rien ne se passe à présent ...

    J'ai pensé, si vous avez la motivation de m'aider (je n'en doute pas) à faire un script avec conditions:

    SI: le script est exécuté sans soucis
    ALORS: Fermer la fenêtre
    SEULEMENT: après trois secondes

    Vous voyez ?
    Je débute en PHP, je vous demande de m'excuser, je n'ai que quelques notions pour le moment.
    1. C'est pourtant ce que semble faire ton script.

      "Rien ne se passe" c'est à dire ? Ton fichier ts.bat est-il bien exécuté ?

      Quelques remarques :
      - le premier print ne sera affiché que à la fin du script (sauf si l'option implicit_flush est activé)
      - pour la condition "si le script est exécuté sans soucis", si il s'agit de l'exécution du script ts.bat, tu peux récupérer le retour de cette exécution en précisant un second paramètre à l'instruction exec (cf. documentation php)
      - la fonction javascript window.close() ne fonctionnera que si la fenêtre a été ouverte en javascript via la fonction window.open(), ce qui ne semble pas être le cas ici.
      Si la fenêtre n'as pas été ouverte avec javascript, il n'existe pas de moyen de fermer celle-ci autre que l'intervention de l'utilisateur.
    2. @Pitet"Rien ne se passe" c'est à dire ? Ton fichier ts.bat est-il bien exécuté ?"
      En fait, la fenêtre ne se ferme pas je veux dire.

      En ce moment ce qui ouvre la fenêtre c'est cette commande:

      <input type="button" value="Nom du bouton" onclick="window.open('ts.php','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=1, copyhistory=0, menuBar=0, width=100, height=100');return(false)"></a>
  4. Bonjour

    Je ne sais pas très bien ce que tu cherches à faire, mais es-tu bien conscient que le "print" et le "echo" affichent quelque chose chez le client, alors que le "exec" et le "sleep" se passent sur le serveur ? Ça peut avoir du sens si tu travailles en local, mais si tu travailles en ligne j'ai beaucoup de mal à voir ce que ça peut donner. Comme tu dis que tu es débutant, j'ai plutôt l'impression que tu ne te rends pas bien compte de ce que tu fais.
    1. Oui, je débute tu as raison je ne me rends pas bien compte de ce que je fais.

      J'aimerais simplement lancer un .bat via une page HTML et que sur le serveur il y est le lancement de ce dernier qui, fermera une application et une fois que c'est fait, renvoie l'information sur le client en le prévenant.
      Enfin, la fenêtre se ferme seule ...

      J'ai une partie du script mais je bloque à certains endroits.
      1. Si c'est bien pour agir sur le serveur, ok, je n'ai rien à dire. J'avais mal préjugé de tes intentions.
      2. Aucun problème :)

        J'aimerais, si tu veux bien, m'aider ?
        Sinon, je le ferais à l'occasion en m'aidant de sites tutoriels ^^

        En tout cas merci à tous pour votre aide.