2009-08-20 10 views
1

Je dois exécuter un script TCL depuis PHP. En ce moment j'utilise le code suivantComment faire pour exécuter le script tcl à partir de PHP?

<?php 
echo passthru("tclsh83 Testcases/source.tcl "); 
?> 

Cela fonctionne. Mais cela crée un shell pour chaque appel. Comment puis-je ouvrir un shell et communiquer de et vers le script TCL. Tout pointeur sera apprécié.

Cordialement, Mithun

+0

J'ai appris à transmettre les valeurs du script php au script TCL passthru ("tclsh83 Testcases/source.tcl $ arg1 $ arg2"); // arguments de ligne de commande Existe-t-il un meilleur moyen d'exécuter le script TCL? Merci, Mithun – Vidya

Répondre

0

Si vous avez beaucoup de données à envoyer au script Tcl, vous pouvez ouvrir lire et écrire des tuyaux avec proc_open(). Ensuite, dans le script tcl, utilisez gets stdin varname pour lire une ligne à partir de stdin.

0

je suis arrivé à connaître la façon de transmettre les valeurs de script php pour le script TCL passthru ("tclsh83 TestCases/source.tcl $ arg1 $ arg2"); // arguments de la ligne de commande Existe-t-il un meilleur moyen d'exécuter le script TCL? Merci, Mithun

Alors qu'est-ce qui ne va pas de cette façon? C'est le meilleur moyen si vous passez toujours seulement 2 paramètres et qu'ils proviennent d'une source fiable. Sinon, vous pouvez avoir un tableau de paramètres, les échapper en utilisant escapeshellarg(), join() et mettre le résultat dans la chaîne de commande. Par exemple:

$params = array(/* <...> */); 
echo passthru('tclsh83 Testcases/source.tcl ' . 
       join(' ', array_map('escapeshellarg', $params))); 
Questions connexes