Question

J'exécute une boucle PHP continue qui exécute un autre fichier PHP en utilisant exec("php ...");. Le plan consiste à exécuter le script exécuté, puis à dormir pendant 2 secondes, puis à recommencer. Cependant, il semble que ma boucle commence à la place une nouvelle instance toutes les 2 secondes. Si longue question court, comment puis-je faire attendre mon premier script PHP jusqu'à ce que l'exécution du script NR 2 soit terminée?

Tout cela est exécuté en utilisant la ligne de commande. Je voudrais également que les fonctions Echo dans Script NR 2 se présentent sur la ligne de commande.

Toutes les pensées aideraient.

Merci

Était-ce utile?

La solution

EXEC ne conserve aucune information d'état entre les instances. Vous pourriez:
Boucle dans votre indice
OU
Vous pouvez définir une sorte de variables d'environnement ou lire au début de l'indice et écrire à la fin.
OU
Vous pourriez demander à l'indice de lire / écrire dans un fichier d'une manière similaire
OU
Vous pouvez transmettre des paramètres à l'indice qui est capturé

Pour sortir à l'écran, vous pouvez jouer avec les autres appels Exec / System:
exécutif
shell_exec
passer à travers
système

Je crois que Passthru () fonctionnera. Une autre possibilité si ce n'est pas le cas est d'appeler Exec (), en utilisant les paramètres de sortie pour capturer les chaînes de sortie de l'indice. Ensuite, en écho à cette sortie au retour de l'indice.

Je crois également que l'utilisation des paramètres de sortie (ou la capture du résultat de la fonction dans une variable) amènera l'exécutif à attendre que la commande soit terminée avant de continuer.

Autres conseils

Le problème est que, une fois que vous avez extrait le script, il s'exécutera. Un autre dirigeant commencera une autre instance comme vous l'avez découvert.

Ce que vous pouvez faire, c'est mettre le sommeil dans le script exécuté. Une fois qu'il commencera à courir, il fera son propre sommeil. Vous pouvez envisager de définir une limite de temps d'exécution et peut-être d'ignorer l'abandon de l'utilisateur. Vous pouvez créer une fonction et laisser votre script appeler cette fonction. Il dormira ensuite après l'exécution et rappellera à nouveau la fonction.

 
// maybe set time limit here
Function loop ()
{

Sleep(120); 
//you can make a check whether to loop or not.
Loop(); 
}

Loop(); 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top