Saisir les résultats d'une php exec() alors que la commande est encore en cours?
Quand je lance un exec
à partir de PHP comme ceci:
$result = exec('command');
Les résultats seront stockés dans $result
. Mais dans mon cas, ma commande peut prendre quelques minutes et affiche des résultats comme il est en cours d'exécution. Est il possible que je peux obtenir une sortie alors qu'il est en cours d'exécution? Je sais que le passthru
méthode de sortie des résultats du navigateur, mais je veux en fait directement.
l'utilisation de CGI au lieu de PHP, possible?
OriginalL'auteur Kyle | 2011-10-09
Vous devez vous connecter pour publier un commentaire.
Vous devriez jeter un oeil à proc_open
Après avoir fait le flux de sortie non-bloquante (avec
stream_set_blocking
), vous pouvez lire quand vous le souhaitez sans avoir votre code PHP bloqué.-Modifier-
Si vous utilisez
Il sera exécuté en arrière-plan et vous pouvez lire le résultat dans /chemin/vers/fichier
OriginalL'auteur Sietse
Peut-être pas la meilleure façon de le faire (mais il a travaillé pour moi):
OriginalL'auteur Eddie
spécifier deuxième argument
ah. dans ce cas, il n'est pas possible. PHP n'est pas asynchrone
Ok. Merci pour l'info!
OriginalL'auteur genesis
Il pourrait être possible d'obtenir ce que vous avez besoin de l'aide de
passthru()
combiné avec le tampon de sortie. Pas sûr, cependant.OriginalL'auteur EdoDodo
Pour qui il peut aider, j'ai utilisé Eddie réponse et l'a modifié pour mes besoins (sortie de MySQL est un fichier de vidage sans inonder le serveur de RAM)
OriginalL'auteur rkok