Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/05/2008, 11h13   #1
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
Par défaut Lancer une commande sans attendre la fin du processus pour passer au reste du script

Bonjour,

Suite à ce script,

Code :
1
2
3
4
  for ($i=1; $i<=5; $i++)
  {
    system('bin\php\php.exe apps\agent.php');
  }
Existe t'il une fonction pour lancer une commande DOS, sans attendre la fin de son exécution du processus lancer (celui ci ne s'arrête jamais) ?

P.S : ce script n'est pas dédié pour du WEB !

Merci d'avance

Arnaud
__________________
www.SonolightDj.com
Prestataire sonorisation et lumière
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 11h28   #2
Membre éclairé
 
Avatar de sohnic
 
Femme
bioinfo
Inscription : mai 2003
Messages : 385
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : bioinfo

Informations forums :
Inscription : mai 2003
Messages : 385
Points : 363
Points : 363
Bonjour,
Tu peux faire comme ca :

Code :
1
2
 
pclose(popen('bin\php\php.exe apps\agent.php &', 'r'));
Bye,

Sohnic
__________________
http://www.noctinfo.fr/

(\ _ /)
(='.'=) Voici Lapinou. Aidez-le à conquérir le monde en le reproduisant.
(")-(")
sohnic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 11h46   #3
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
niquel ca fonctionne !

par contre, j'ai fais ceci :

Code :
1
2
3
4
  for ($i=1; $i<=_APPS_NB_PROCESSUS; $i++)
  {
    pclose(popen('start bin\php\php.exe apps\agent.php &', 'r'));
  }
j'ai ajouter un start dans la commande. J'ai donc 5 fenetre qui s'ouvre en executant chacun leurs processus.

Le faire ne ne pas mettre de start, cela fait la meme chose mais en arrière plan ?
__________________
www.SonolightDj.com
Prestataire sonorisation et lumière
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 11h50   #4
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
Je répond peut etre en me trompant, mais il me semble que les processus lancer par :
Code :
1
2
 
pclose(popen('bin\php\php.exe apps\agent.php &', 'r'));
n'execute pas la commande.

par contre en fesant un :

Code :
pclose(popen('start bin\php\php.exe apps\agent.php &', 'r'));
nickel !

En effet, mes processus lancer créer des logs et avec la 1er manière j'ai aucun log, la seconde, oui...
__________________
www.SonolightDj.com
Prestataire sonorisation et lumière
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 12h02   #5
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
Alors j'ai modifier la commande pour avoir enfin se que je voulais :

Code :
pclose(popen('bin\php\php.exe apps\agent.php &', 'w'));
en effet j'ai passé le paramètre de r à w (comme write). Cela permet à mes processus de créer leur fichier de log.

Par contre, une question :

Pendant un certain temps, le script ne me rend pas la main, mais après oui. Les processus tourne toujours. Si je ferme mon script (lui aussi lancer avec php.exe en dos vu que je vais du script système), mes processus seront bien stoppé ?
__________________
www.SonolightDj.com
Prestataire sonorisation et lumière
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 14h27   #6
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
Donc après plein de tests voici ce que je dois faire pour avoir chaque processus tournant indépendamment :

Code :
pclose(popen('start bin\php\php.exe apps\agent.php ', 'w'));
Dans la commande lancer, je suis obliger de mettre "start", car sans, mon processus suivant n'est jamais lancer. Le "w" pour pouvoir écrire le fichier de log.

Si vous avez une solution de mieux, j'attend vos propositions.

Ce qui serai bien c'est de ne pas voir apparaitre les fenetre CMD lancer par le start...

le script actuel :

Code :
1
2
3
4
  for ($i=1; $i<=5; $i++)
  {
      pclose(popen('start bin\php\php.exe apps\agent.php', 'w'));
  }
P.S : petite précision, je suis sous windows ! donc le & pour mettre le script en deamon j'y avais pensé, mais sur windows, il n'y a pas d'équivalent ?
__________________
www.SonolightDj.com
Prestataire sonorisation et lumière
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 15h20   #7
Membre éclairé
 
Avatar de sohnic
 
Femme
bioinfo
Inscription : mai 2003
Messages : 385
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : bioinfo

Informations forums :
Inscription : mai 2003
Messages : 385
Points : 363
Points : 363
Tu as travaillé sur la question !
Désolée, mais je connais bien mieux linux que DOS. Je ne sais pas comment resoudre ton pb de terminal.... Je me sers de cette fonctionnalité pour gérer les problèmes de timeout des serveurs web, mais dans ton cas, je ne sais pas comment tu pourrais améliorer le code....

Bon courage,

S.
__________________
http://www.noctinfo.fr/

(\ _ /)
(='.'=) Voici Lapinou. Aidez-le à conquérir le monde en le reproduisant.
(")-(")
sohnic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2008, 16h12   #8
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
merci quand meme
__________________
www.SonolightDj.com
Prestataire sonorisation et lumière
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2008, 17h41   #9
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
utilises les possibilités du DOS.

Je croit que c'est
Des liens utiles autrement :
http://www.ss64.com/nt/index.html
http://commandwindows.com/
et aussi
http://www.google.fr/search?q=window...and+line&hl=fr
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h14.


 
 
 
 
Partenaires

Hébergement Web