Pause exécution script PHP

[Fermé]
Signaler
Messages postés
1861
Date d'inscription
jeudi 14 août 2008
Statut
Membre
Dernière intervention
2 avril 2017
-
Messages postés
1861
Date d'inscription
jeudi 14 août 2008
Statut
Membre
Dernière intervention
2 avril 2017
-
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

Messages postés
408
Date d'inscription
jeudi 26 septembre 2013
Statut
Membre
Dernière intervention
28 mai 2018
292
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
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
1861
Date d'inscription
jeudi 14 août 2008
Statut
Membre
Dernière intervention
2 avril 2017
225
Un grand merci, j'essaie tout de suite.
Messages postés
1861
Date d'inscription
jeudi 14 août 2008
Statut
Membre
Dernière intervention
2 avril 2017
225
Oups ...

Parse error: syntax error, unexpected 'sleep' (T_STRING) in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\ts.php on line 4
Messages postés
2706
Date d'inscription
jeudi 2 juillet 2015
Statut
Membre
Dernière intervention
17 septembre 2021
1 646
Bonjour,

C'est sans doute dû a la non fermeture de la fonction Exec
Messages postés
408
Date d'inscription
jeudi 26 septembre 2013
Statut
Membre
Dernière intervention
28 mai 2018
292
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 */
Messages postés
2559
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
16 septembre 2021
461
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.
Messages postés
408
Date d'inscription
jeudi 26 septembre 2013
Statut
Membre
Dernière intervention
28 mai 2018
292 >
Messages postés
2559
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
16 septembre 2021

Je n'avais pas fait attention à son erreur de syntaxe !^^ Je viens de le voir maintenant !^^
Messages postés
1861
Date d'inscription
jeudi 14 août 2008
Statut
Membre
Dernière intervention
2 avril 2017
225
C'est pas bien méchant, j'aurais dû faire attention en copiant/collant.
Messages postés
1861
Date d'inscription
jeudi 14 août 2008
Statut
Membre
Dernière intervention
2 avril 2017
225
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.
Messages postés
2559
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
16 septembre 2021
461
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.
Messages postés
1861
Date d'inscription
jeudi 14 août 2008
Statut
Membre
Dernière intervention
2 avril 2017
225 >
Messages postés
2559
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
16 septembre 2021

"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>

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.
Messages postés
1861
Date d'inscription
jeudi 14 août 2008
Statut
Membre
Dernière intervention
2 avril 2017
225
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.
Utilisateur anonyme
Si c'est bien pour agir sur le serveur, ok, je n'ai rien à dire. J'avais mal préjugé de tes intentions.
Messages postés
1861
Date d'inscription
jeudi 14 août 2008
Statut
Membre
Dernière intervention
2 avril 2017
225
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.