Problème avec la commande "exec" en PHP

Problème avec la commande "exec" en PHP - PHP - Programmation

Marsh Posté le 11-04-2005 à 15:19:37    

Bonjour a tous,
 
Voila mon poblème: dans mon script PHP, j'utilise la commande "exec" pour executer un programme batch qui lance un daemon MRTG.
Le problème est que ce daemon tourne continuellement et donc ma page web n'arrete pas de charger. Je voudrais donc que ma page se charge normalement et que mon daemon tourne en tache de fond.....
 
Merci pour vos réponses
 
Philippe

Reply

Marsh Posté le 11-04-2005 à 15:19:37   

Reply

Marsh Posté le 11-04-2005 à 16:27:03    

le code ?

Reply

Marsh Posté le 11-04-2005 à 16:32:52    

Voila une partie du code :
 

Code :
  1. $fichier = fopen("d:\EasyPHP\www\MRTG\Batch\config.bat","r+" );
  2. $content = fread($fichier, filesize("d:\EasyPHP\www\MRTG\Batch\config.bat" ));
  3. if(count(explode("lan_$IP.cfg",$content))>1) {
  4. exec("d:\EasyPHP\www\MRTG\Batch\config.bat" );
  5. }
  6. else {
  7. fwrite($fichier,"perl c:\mrtg\bin\mrtg d:\EasyPHP\www\MRTG\lan_$IP.cfg" );
  8. exec("d:\EasyPHP\www\MRTG\Batch\config.bat" );
  9. }
  10. fclose($fichier);


 
et aussi le fichier .bat que j'appel avec le script PHP :  
 

Code :
  1. @echo off
  2. perl c:\mrtg\bin\mrtg d:\EasyPHP\www\MRTG\lan_010.006.036.063.cfg

Reply

Marsh Posté le 11-04-2005 à 20:47:12    

Voila comment je ferais ... (c'est vite fait et pas essayé, mais le principe me semble correct)
 

Code :
  1. $fichier = "d:\EasyPHP\www\MRTG\Batch\config.bat" ;
  2. if (@$fp = fopen($fichier, "r+" )) {
  3.     while (!feof($fp)) {
  4.         $line = fgets($fp, "1024" ) ;
  5.         if (preg_match("/(.)\\lan_([0-9]{0,3})\.{3}([0-9]{0,3})\.cfg$/", $line) {
  6.             fclose($fp) ;
  7.             @system($fichier) ;
  8.             exit (0) ;
  9.         } else {
  10.             fwrite($fp, "perl c:\mrtg\bin\mrtg d:\EasyPHP\www\MRTG\lan_".$IP.".cfg" ) ;
  11.             fclose($fp) ;
  12.             @system($fichier) ;
  13.             exit (0) ;
  14.         }
  15.     }
  16. }
  17. fclose($fp) ;


Message édité par GaSPaRD77 le 11-04-2005 à 20:53:14
Reply

Marsh Posté le 12-04-2005 à 08:15:37    

Merci por ton code mais le problème que je voulais résoudre est toujours présent, à savoir que le fichier .bat tourne continuellement sur la page web et pas en tache de fond.....
 
Aidez moi SVP!!!

Reply

Marsh Posté le 12-04-2005 à 10:05:16    

Essaye ça :
 

Code :
  1. $fichier = "d:\EasyPHP\www\MRTG\Batch\config.bat" ;
  2. $WshShell = new COM("WScript.Shell" ) ;
  3. if (@$fp = fopen($fichier, "r+" )) {
  4.     while (!feof($fp)) {
  5.         $line = fgets($fp, "1024" ) ;
  6.         if (preg_match("/(.)\\lan_([0-9]{0,3})\.{3}([0-9]{0,3})\.cfg$/", $line) {
  7.             fclose($fp) ;
  8.             $oExec = $WshShell->Run($fichier, 7, false) ;
  9.             exit (0) ;
  10.         } else {
  11.             fwrite($fp, "perl c:\mrtg\bin\mrtg d:\EasyPHP\www\MRTG\lan_".$IP.".cfg" ) ;
  12.             fclose($fp) ;
  13.             $oExec = $WshShell->Run($fichier, 7, false) ;
  14.             exit (0) ;
  15.         }
  16.     }
  17. }
  18. fclose($fp) ;


Reply

Marsh Posté le 12-04-2005 à 10:45:48    

J'ai peu etre une question con, mais que représente l'objet WScript.Shell ???

Reply

Marsh Posté le 12-04-2005 à 11:28:33    

84phil a écrit :

J'ai peu etre une question con, mais que représente l'objet WScript.Shell ???


 
http://www.winguides.com/scripting [...] php?id=109

Reply

Marsh Posté le 12-04-2005 à 11:39:49    

Merci pour réponces mais j'ai encore un problème, la focntion :  

Code :
  1. $WshShell = new COM("WScript.Shell" ) ;


n'ouvre pas l'objet

Reply

Marsh Posté le 12-04-2005 à 12:49:32    

En fait, j'obtient la réponse suivante lorsque j'execute la page :

Citation :

Warning: (null)(): Invalid ProgID, GUID string, or Moniker: Syntaxe incorrecte in d:\easyphp\www\mrtg\script_cfg.php


Je ne sais pas vraiment quoi en déduire....

Reply

Marsh Posté le 12-04-2005 à 12:49:32   

Reply

Marsh Posté le 12-04-2005 à 13:15:09    

Tu tournes sous quel windows ?

Reply

Marsh Posté le 12-04-2005 à 13:33:18    

En fait je crois que c'est un problème au niveau de mon pc, je suis sous win 2000 mais ca marche pas, chez mon collègue qui est sous XP, la commande WScript fonctionne bien...

Reply

Marsh Posté le 12-04-2005 à 13:58:43    

tu as le framework .NET d'installé sur ton win2000 ?
sinon installe le et ça devrait passer

Reply

Marsh Posté le 12-04-2005 à 14:49:15    

A croire que je suis maudit, ca ne marche toujours pas, j'avai deja framework .net 1.1 d'installé, je l'ai reinstallé, mais ca ne marche pas mieux...
Je vas essayer de chercher et je vous dis si il y a du mieux !!

Reply

Marsh Posté le 12-04-2005 à 14:58:46    

Ouais parceque là je vois carrement pas ...

Reply

Marsh Posté le 12-04-2005 à 16:26:05    

Tient aussi change ton preg_match et met ça à la place, ça passera mieux :D
 

Code :
  1. /(.)+\\lan_(([0-9]{0,3})\.){3}([0-9]{0,3})\.cfg$/

Reply

Marsh Posté le 12-04-2005 à 16:53:18    

au fait, sur la page http://fr.php.net/manual/fr/function.exec.php
regarde le commentaire de netshadow, ça correspond bien à ton problème je crois

Reply

Marsh Posté le 14-04-2005 à 10:00:27    

Je te remerci, ton lien m'a été très utile et ca fonctionne maintenant!!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed