Exécuter programme avec php, javascript...

Résolu/Fermé
Nono_igo Messages postés 63 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 1 octobre 2016 - 5 janv. 2012 à 10:24
Nono_igo Messages postés 63 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 1 octobre 2016 - 6 janv. 2012 à 11:12
Bonjour,

Pour mon site web, j'aimerais exécuter un programme sur serveur distant (des algorithmes Scilab pour tout dire). Le but final serait donc de donner des paramètres via mon interface web, de les envoyer à Scilab en tâche de fond pour qu'il les traite avec mes algo et de récupérer les résultats de sortie pour les afficher sur une page de mon site.

Alors, je suis parti avec les fonctions exec(), shell_exec(), etc. Voilà en gros ce que ça donne :
exec('emplacement_de_scilab -nwni -nouserstartup -f emplacement_de_mon_algo.sce', $out, $var);
print_r($out);
print_r($var);


Et je reçois seulement sur mon interface web (alors que mon algo tout simple me renvoie aléatoirement "pile" ou "face" sur Scilab avec la fonction disp) :
Array ( ) 1

Est-ce que j'utilise correctement mes fonctions d'exécution ?
En faisant des recherches, il se pourrait que cela soit plus faisable avec javaScript... Si oui, pourriez-vous m'aiguiller sur les bonnes infos ?

Tans de questions qui restent sans réponse ! Merci de m'aider...




A voir également:

8 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
5 janv. 2012 à 11:57
Bonjour,

Tu dis :
« Alors que sous Scilab, dans la console, lorsque j'exécute mon algo, il me retourne "pile" ou "face" »

Ce « pile » ou « face », ils apparaissent dans la console, ou dans une fenêtre de Scilab ?


Xavier
1
Hi,

see http://www.ibm.com/developerworks/opensource/library/os-php-scilab/index.html
0
SpeedHunter Messages postés 108 Date d'inscription mardi 4 décembre 2007 Statut Membre Dernière intervention 12 janvier 2012 6
5 janv. 2012 à 11:05
Cela sort un tableau, essaye de lire celui ci peut être..
0
Nono_igo Messages postés 63 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 1 octobre 2016 3
Modifié par Nono_igo le 5/01/2012 à 11:27
C'est ce que je fais avec la fonction php : print_r() déjà. Je lis bien mon tableau et c'est là le problème : il est vide ! Alors que sous Scilab, dans la console, lorsque j'exécute mon algo, il me retourne "pile" ou "face"...
0
SpeedHunter Messages postés 108 Date d'inscription mardi 4 décembre 2007 Statut Membre Dernière intervention 12 janvier 2012 6
5 janv. 2012 à 11:41
print_r($out[0]); non?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nono_igo Messages postés 63 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 1 octobre 2016 3
5 janv. 2012 à 11:57
Non, si je ne me trompe pas, la fonction print_r() prend un array comme argument. Pour exemple, essaye ça :
$out = array ('François', 'Michel', 'Nicole', 'Véronique', 'Benoît');
echo '<pre>';//spécificité de la fonction print_r() qui remplace juste <br /> pour que l'affichage soit plus clair.
print_r($out);
echo '</pre>';


La syntaxe print_r($out[0]); fonctionne aussi et affichera seulement le 1er élément de ton tableau. D'ailleurs, je l'ai essayé, et il me retourne : "Notice: Undefined offset: 0 etc...". Ce qui semble bien montrer que mon tableau de retour est vide...

Le problème ne semble pas venir de là, mais merci pour ton aide quand même.
0
SpeedHunter Messages postés 108 Date d'inscription mardi 4 décembre 2007 Statut Membre Dernière intervention 12 janvier 2012 6
5 janv. 2012 à 12:33
allan t'as donné la solution
0
Nono_igo Messages postés 63 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 1 octobre 2016 3
5 janv. 2012 à 16:24
Bonjour,

@Reivax : Ils apparaissent dans la console lorsque je demande l'exécution de mon script. J'avoue que mon problème pourrait bien venir de là et de mon faible niveau en Scilab... A savoir, comment fait-on une vraie valeur retour à la sortie d'un algo.

@allan : Thx Allan, I will see that quickly and I will say you if it's OK !
0
Nono_igo Messages postés 63 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 1 octobre 2016 3
5 janv. 2012 à 19:27
Alors d'après le site de Allan, je crois que mon problème viens (j'ai pris un exemple simple) :
* soit des permissions de mon serveur web (car ma commande fonctionne dans la console windows quand je suis dans le répertoire de scilex.exe),

* soit de ma syntaxe qui ne serait pas la bonne...
$command = 'scilex -nwni -nb -e "m=[1 2 3; 3 4 5] ; disp(m) ; exit ;"';
exec($command, $output);
print_r ($output);//et là, j'ai toujours un tableau vide...

* soit du chemin d'accès. Est-ce que je devrais mettre le chemin absolu (D:\mon_chemin\scilex) à la place de scilex dans l'exemple précédent ? Ou partir du répertoire de ma page et faire qqch du style : cd..\cd..\mon_chemin\scilex (mais là, la syntace en cmd ?!) ???

Bref, je sens qu'on se rapproche mais ça ne fonctionne pas encore. Est-ce que qq'un à déjà réussi à faire fonctionner ce genre de programme déjà ???
0
Nono_igo Messages postés 63 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 1 octobre 2016 3
6 janv. 2012 à 11:12
Bonjour !

Alors j'ai un peu avancé sur le sujet. Grâce à votre aide surtout ! Mon problème venait du chemin d'accès. Je pensais qu'il fallait la même syntaxe que lors de l'exécution dans la console. Mais non, il suffit d'utiliser les ".." pour remonter dans le dossier précédent.
$path = '..\scilab-5.3.3\bin\\';//le chemin de Scilex.exe en partant de l'emplacement de mon fichier .php
$command = $path.'scilex -nwni -nb -e "m=[1 2 3; 3 4 5] ; disp(m) ; exit;"';
exec($command, $output);
print_r ($output);// Et cette fois, je récupère bien ma matrice en sortie sur mon interface web !

Je vais essayer d'exécuter des algo plus important maintenant, mais je crois qu'on peut dire que le problème résolu !

Merci à tous !
0