Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'ai un petit soucis depuis un controller.
Depuis ce dernier je désires exécuter un script externe en PHP, afin d'en récupérer le numéro de processus, de faire nombre de traitements...
1- Croyez-vous que cela est possible ?
2- Où mettre le script dans l'arborescence Zend ?
3- Comment y accéder depuis mon Controller ?
Par avance merci de vos réponses
++
Hors ligne
1. oui
2. peut importe
3. utilise les commande système : http://be.php.net/fr/exec
Hors ligne
Bonjour,
Merci de ta réponse.
J'ai pensé à EXEC, mais j'ai quelques soucis pour voir le process en cours et surtout pour récupérer le résultat
$filedir = 'E:\Documents\xxxxx\MesDocuments\xxxxx\FMXML\xxxxxx\script\scriptXML.php'; $last_line = exec('php ' .$filedir . "> DOS/Windows &", $retval); echo print_r($retval);
- Si je ne mets pas "DOS/Windows" le script continue. Je suis en mode synchrone...
- Si je mets "DOS/WINDOWS" le client reprend la main. Le script n'est pas exécute.
Une idée peut être ?
D'avance merci
++
Dernière modification par cvbdev (03-06-2011 15:17:22)
Hors ligne
je te conseil de lire ceci : http://www.chipmunkninja.com/Program-Ex … 3A-exec-m@
et si tu supprime le '&'?
Hors ligne
Merci pour la réponse !
Même en enlevant le "&" ça ne fonctionne pas...
En remplaçant "DOS/Windows" par "nul" ne fonctionne pas non plus...
Je suis passé à une autre méthode qui me semble plutot bien fonctionné.
$proc = new process(); $proc->launchBackgroundProcess('php C:\wamp\www\process\script.php'); class process{ // lancer le processus en tâche de fond si ce dernier n'est déjà en cours function launchBackgroundProcess($call) { // Windows if($this->is_windows()){ pclose(popen('start /b '.$call , 'r')); } // Some sort of UNIX else { pclose(popen($call.' /dev/null &', 'r')); echo posix_getgid(); } return true; } function is_windows(){ if(PHP_OS == 'WINNT' || PHP_OS == 'WIN32'){ return true; } return false; } }
Me reste deux trois choses encore:
Il faut que je sache comme récupérer le PID du processus lancé par cette fonction, afin de réaliser un test, pour éviter de relancer ce même process. Et savoir si je peux remplacer :
$proc->launchBackgroundProcess('php C:\wamp\www\process\script.php');
Par l'appel d'un controller...
Si oui, ça m'arrangerai bien, notament pour garder le PID en mémoire, sans passer par des fichiers ou une base de données...
++
Edit : A priori il n'est pas possible d'apeller un controller...
Dernière modification par cvbdev (04-06-2011 12:42:12)
Hors ligne