Appel d'une commande bloquante via system()

Appel d'une commande bloquante via system() - PHP - Programmation

Marsh Posté le 30-05-2006 à 15:12:13    

Un truc tout con : j'appelle dans ma page PHP une commande Unix via la fonction system().

 

Le problème c'est que tant que cette commande ne va pas rendre la main à l'interpréteur PHP (que le programme n'a pas terminé son execution), celui-ci ne termine pas la "construction" de la page, faisant patienter l'utilisateur jusqu'à ce que le programme ait terminé son execution.

 

J'aimerais savoir comment pallier à cet inconvénient...

 

J'ai essayé un truc du style system("macommande &" ); mais l'interpréteur php attends quand même la fin du programme pour continuer son execution...

 

Je tiens à préciser que j'utilise l'interpréteur PHP en tant que module pour apache (donc pas possible de "forker" ).

 

Merci pour vos réponses
++
Loudi

Reply

Marsh Posté le 30-05-2006 à 15:12:13   

Reply

Marsh Posté le 30-05-2006 à 16:15:26    

Faut peut-être faire cet appel dans un script à part lancé via un web bug ou par javascript.


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 30-05-2006 à 16:19:05    

palnap a écrit :

Un truc tout con : j'appelle dans ma page PHP une commande Unix via la fonction system().
 
Le problème c'est que tant que cette commande ne va pas rendre la main à l'interpréteur PHP (que le programme n'a pas terminé son execution), celui-ci ne termine pas la "construction" de la page, faisant patienter l'utilisateur jusqu'à ce que le programme ait terminé son execution.
 
J'aimerais savoir comment pallier à cet inconvénient...
 
J'ai essayé un truc du style system("macommande &" ); mais l'interpréteur php attends quand même la fin du programme pour continuer son execution...
 
Je tiens à préciser que j'utilise l'interpréteur PHP en tant que module pour apache (donc pas possible de "forker" ).
 
Merci pour vos réponses
++
Loudi


En ce qui me concerne, j'évite absolument :

  • d'appeler des fonctions système depuis PHP (je désactive les fonctions au niveau php.ini pour bloquer certaines failles de sécurité)
  • j'évite de faire des appels trop longs depuis apache (car ça peut entraîner des dénis de services, volontaires ou non, en occupant tous les process apache)

Tu peux envisager de séparer ton code en deux : ta page web alimente une file d'attente en base de données, et un script (appelé en cron) lance tes commandes en fonction de la file d'attente. Enfin, c'est comme ça que je ferais...


---------------
ipersec - Optimisation et sécurisation de sites internet
Reply

Sujets relatifs:

Leave a Replay

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