Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-06-2011 10:58:08

cvbdev
Membre
Date d'inscription: 20-01-2011
Messages: 27

Comment executer un script externe depuis un controlleur ?

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

 

#2 03-06-2011 14:28:57

Grummfy
Membre
Lieu: Belgique
Date d'inscription: 01-08-2007
Messages: 232
Site web

Re: Comment executer un script externe depuis un controlleur ?

1. oui
2. peut importe
3. utilise les commande système : http://be.php.net/fr/exec


Engagez-moi! : Cherche job en Belgique autour de Namur (1 heure de route autour)
blog - ZF Planet

Hors ligne

 

#3 03-06-2011 15:00:50

cvbdev
Membre
Date d'inscription: 20-01-2011
Messages: 27

Re: Comment executer un script externe depuis un controlleur ?

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


Code:

$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

 

#4 03-06-2011 18:42:59

Grummfy
Membre
Lieu: Belgique
Date d'inscription: 01-08-2007
Messages: 232
Site web

Re: Comment executer un script externe depuis un controlleur ?

je te conseil de lire ceci : http://www.chipmunkninja.com/Program-Ex … 3A-exec-m@

et si tu supprime le '&'?


Engagez-moi! : Cherche job en Belgique autour de Namur (1 heure de route autour)
blog - ZF Planet

Hors ligne

 

#5 03-06-2011 18:55:40

cvbdev
Membre
Date d'inscription: 20-01-2011
Messages: 27

Re: Comment executer un script externe depuis un controlleur ?

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é.


Code:

$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 :

Code:

$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...

++
smile

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages