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 24/01/2011, 12h18   #1
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Par défaut PHP, exec et batch

Bonjour,

je cherche à lancer un bat (je dév avec wamp sous windows pour le moment) me lançant un serveur de socket. J'ai 2 soucis :

1) la syntaxe suivante me lance bien le serveur :

Code :
1
2
 
exec('C:/wamp/www/socket/serveur.bat');
celle ci non :

Code :
1
2
 
exec('http://localhost/socket/serveur.bat');
Est-ce une config d'apache autorisant l'exécution des bat à mettre en place ?

2) mon bat lance une classe PHP qui tourne indéfiniment (serveur de sockets). Existe t-il un moyen d'exec le bat puis de "retrouver la main" sur le script ?

Merci
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 12h33   #2
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Pour le 1) j'ai résolu en effectuant un dirname(__FILE__).
pour le 2) le problème vient de là probablement :

Citation:
Si vous démarrez un programme en utilisant cette fonction et que vous voulez le laisser tourner en arrière plan, vous devez vous assurer que la sortie du programme est redirigée vers un fichier, ou un autre flux de sortie, sinon PHP attendra jusqu'à la fin de l'exécution du programme.
EDIT: une commande comme :

Code :
1
2
3
 
exec(dirname(__FILE__).'/serveur.bat > &1');
exec(dirname(__FILE__).'/timeDispatcher.bat > &1');
n'est plus bloquante mais ne lance pas apparemment mes classes PHP
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 12h49   #3
Membre confirmé
 
Avatar de sayari.dev
 
Homme Marouen Sayari
Développeur Web
Inscription : mai 2010
Messages : 142
Détails du profil
Informations personnelles :
Nom : Homme Marouen Sayari
Localisation : Algérie

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2010
Messages : 142
Points : 225
Points : 225
Sous windows, tu peux utiliser la classe COM


Code :
1
2
$cmd = new COM("WScript.Shell");
$cmd->Run('chemin_vers_fichier_batch.bat', 0, false);
__________________
C'est en faisant n'importe quoi qu'on devient n'importe qui
sayari.dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 12h52   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
Hello

1) Je ne suis pas sûr que exec sache se servir du wrapper http, si tu y arrives, fais-le moi savoir

2) Tu peux également utiliser un fork (si tu as la pcntl): http://www.php.net/manual/en/function.pcntl-fork.php et comme ça plus besoin de bat.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 13h00   #5
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Nice ca marche nickel merci Sayari

pour info lors d'un déploiement sur un serveur Linux, la syntaxe suivante marcherait ?

Code :
1
2
 
exec(dirname(__FILE__).'/serveur.sh  2>&1');
merci encore
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 13h40   #6
Membre confirmé
 
Avatar de sayari.dev
 
Homme Marouen Sayari
Développeur Web
Inscription : mai 2010
Messages : 142
Détails du profil
Informations personnelles :
Nom : Homme Marouen Sayari
Localisation : Algérie

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2010
Messages : 142
Points : 225
Points : 225
C'est plutôt

Code :
exec(dirname(__FILE__) . '/serveur.sh  2>&1 &');
__________________
C'est en faisant n'importe quoi qu'on devient n'importe qui
sayari.dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 14h27   #7
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
@Benjamin : désolé j'ai pas testé ta solution vu que celle de Sayari a marché

@Sayari : exact oui le & pour mettre en tâche de fond

Un grand merci en tout cas, je vais pouvoir continuer mes tests sous windaube
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h07.


 
 
 
 
Partenaires

Hébergement Web