Si je comprend bien tu as :
- un programme N en ligne de commande qui affiche des données et qui en réclame d'autres petit à petit
- une page web qui lance le programme
- une page web qui fournis les données au programme et ce au goute à goute
Ce que tu veux, c'est que plusieurs pages web arrivent à dialoguer avec la même instance du programme (donc sans jamais le relancer) Désolé de te dire ça, mais je ne vois aucune solution permettant de faire ça en utilisant que du php.
La première solution auquel on pourrait penser serait de faire passer l'identifiant de ressource d'une page à l'autre. Le problème c'est que ça ne peut pas marcher vu que toutes les ressources sont fermé par php à chaque fin d'exécution d'une page.
La seconde solution serait de réussir à se brancher sur les entrés/sorties standard d'un programme déjà lancé (par la première page dans ton cas) mais à ma connaissance le php ne permet pas de faire ça (en plus tu es à distance donc c'est carrément impossible à ma connaissance sans passer par des programmes intermédiaires).
On en arrive donc à la troisième solution qui serait d'avoir sur le serveur distant un programme M capable de se connecter à la volé aux entrés/sorties standard du programme N (s'il est déjà lancé) afin de lui fournir la réponse suivante et d'avoir la suite des instructions. Le problème c'est qu'on risque alors de louper des infos voire de répondre à une mauvaise question (si le programme N à un timeout sur l'attente de réponse) Pour éviter ce problème, il faudrait faire un programme intermédiaire qui se place entre les programme M et N et qui reste connecté constamment au programme N
Avec l'avant dernière solution, on aurait donc :
n pages PHP => n flux SSH => n lancement du programme O => programme N (lancé une seule fois)
Comme tu l'imagines, dans les deux derniers cas, on est loin d'une solution qui soit intégralement en php.
PS : Les deux dernières ne sont valable que si le programme N n'est pas tué par le système d'exploitation quand php ferme la liaison ssl.