Problème avec exec() PHP (pour Scilab)
Résolu/Fermé2 réponses
pitxu
Messages postés
689
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
25 mars 2015
94
30 janv. 2012 à 11:29
30 janv. 2012 à 11:29
Bonjour, regarde cette exemple (Listing2) -> https://www.ibm.com/developerworks/opensource/library/os-php-scilab/index.html?ca=drs-
Nono_igo
Messages postés
63
Date d'inscription
mardi 3 janvier 2012
Statut
Membre
Dernière intervention
1 octobre 2016
3
31 janv. 2012 à 14:59
31 janv. 2012 à 14:59
Alors j'ai re-vérifié sous DOS l'exécution de mes scripts (.sce) et cette fois, même ceux avec des chaînes de caractères ou des conditions if/else fonctionnent... Donc cela vient bien du PHP et de la façon dont sont lu ces caractères/mots clés. Au-moins, j'ai une légère idée de où chercher...
Pour info, voici mes commande DOS :
MyRepertory>Scilex -nwni -nb -f test2.sce
Pour info, voici mes commande DOS :
MyRepertory>Scilex -nwni -nb -f test2.sce
Nono_igo
Messages postés
63
Date d'inscription
mardi 3 janvier 2012
Statut
Membre
Dernière intervention
1 octobre 2016
3
31 janv. 2012 à 15:37
31 janv. 2012 à 15:37
Alors, il se trouve que ça fonctionne finalement ! Lorsque j'intègre le "exit;" directement dans le script (.sce)... J'ai l'impression qu'on ne peut pas fait faire :
Et c'est pour ça que Scilab tournait sans fin !
Que ce soit avec "exit;" ou l'ajout de n'importe quel autre morceau de code Scilab. Sinon, il faut mettre seulement du code Scilab à la place et l'option -e en remplacement de -f.
Donc pour rendre justice : l'erreur venait du fait que le développeur (en l'occurrence moi), n'avait juste pas mis de "exit;" dans les qq scripts de tester avec des chaînes de caractères ou des conditions ! Pas bien !
Alors une dernière question : Et si on veut vraiment pouvoir faire qqch du style :
Une des solutions serait de pouvoir extraire sous forme de chaîne de caractères le code contenu dans les fichiers .sce et de le placer dans une variable PHP ou alors une option -magic pour faire ça ! ^^
Je vais chercher ça de mon côté.
exec('Scilex -nwni -nb -f script.sce exit;', $output);
Et c'est pour ça que Scilab tournait sans fin !
Que ce soit avec "exit;" ou l'ajout de n'importe quel autre morceau de code Scilab. Sinon, il faut mettre seulement du code Scilab à la place et l'option -e en remplacement de -f.
Donc pour rendre justice : l'erreur venait du fait que le développeur (en l'occurrence moi), n'avait juste pas mis de "exit;" dans les qq scripts de tester avec des chaînes de caractères ou des conditions ! Pas bien !
Alors une dernière question : Et si on veut vraiment pouvoir faire qqch du style :
exec('Scilex -nwni -nb -f script1.sce clear; script2.sce exit;', $output);
Une des solutions serait de pouvoir extraire sous forme de chaîne de caractères le code contenu dans les fichiers .sce et de le placer dans une variable PHP ou alors une option -magic pour faire ça ! ^^
Je vais chercher ça de mon côté.
Nono_igo
Messages postés
63
Date d'inscription
mardi 3 janvier 2012
Statut
Membre
Dernière intervention
1 octobre 2016
3
31 janv. 2012 à 17:16
31 janv. 2012 à 17:16
C'est super, j'ai trouvé comment partir à l'aventure :
Avec cette méthode et l'option -e, je pense qu'on peut faire pas mal de chose avec PHP et Scilab combiné. Si ça peux donner des idées à certains, j'aurais pas posté ça inutilement ! ^^
$monfichier = fopen('test.sce', 'r'); echo('Voici ce que contient mon code : <br>'); while($ligne = fgets($monfichier)){ print_r($ligne); echo "<br />"; } fclose($monfichier);
Avec cette méthode et l'option -e, je pense qu'on peut faire pas mal de chose avec PHP et Scilab combiné. Si ça peux donner des idées à certains, j'aurais pas posté ça inutilement ! ^^
bonjour!
merci pour le tuyau. j'ai toutefois une question: est-ce que vous savez pourquoi scilab-5.4.0 na veut plus redémarrez et m'affiche: "scilab ne peut pas créer la classe principale java scilab( la classe Scilab est impossible a trouver.vérifiez si les paquets scilab et thirdparty sont accessibles)? et comment redémarrer scilab?
merci beaucoup
merci pour le tuyau. j'ai toutefois une question: est-ce que vous savez pourquoi scilab-5.4.0 na veut plus redémarrez et m'affiche: "scilab ne peut pas créer la classe principale java scilab( la classe Scilab est impossible a trouver.vérifiez si les paquets scilab et thirdparty sont accessibles)? et comment redémarrer scilab?
merci beaucoup
30 janv. 2012 à 11:56
Merci pour l'exemple, mais je l'avais déjà trouvé et le problème, c'est qu'il ne montre pas comment on utilise directement un fichier/script Scilab (.sce) avec PHP mais seulement comment faire exécuter une commande d'un script que l'on entre dans une variable ($code pour être précis).
Remarque, je commence à me dire que je passerai par cette méthode... Mais si je pouvais utiliser directement des fichiers .sce, ça serait plus "propre". Et cela est possible puisque j'y arrive avec mon 1er exemple d'au-dessus !
Merci tout de même pour ton aide.
30 janv. 2012 à 12:31
30 janv. 2012 à 12:43
Plus déroutant encore : j'ai testé le code de l'exemple que tu as donné, et même avec cette méthode, cela ne fonctionne pas avec des caractères. J'ai juste voulu tester ceci :
Et même problème : Scilab est lancé dans les processus en fond sur mon ordi mais tourne en boucle sans réussir à exécuter le script (pourtant pas compliqué ! ^^)... Pourtant, le code de l'exemple prend bien en compte le remplacement de certains caractères spécifiques (tels que le ")... Je suis en train de me dire que ce que je veux faire n'est pas possible !
30 janv. 2012 à 13:02
30 janv. 2012 à 13:14
il existe un outil apparemment pour tuer le processus.