Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1408 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] exec -> exit php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] exec -> exit php

n°1591690
nORKy
Grmmph...
Posté le 26-07-2007 à 10:42:30  profilanswer
 

Lorsque je fais un exec("sudo /etc/init.d/httpd reload" ); ca exit mon script PHP (donc page totalement blanche).
Pourquoi ?
Le script shell n'est pas censé un bash (présence de #!/bin/bash au début du script) et que ce script bash quit une fois fini (et non pas mon php)


Message édité par nORKy le 27-07-2007 à 11:04:45
mood
Publicité
Posté le 26-07-2007 à 10:42:30  profilanswer
 

n°1591691
nORKy
Grmmph...
Posté le 26-07-2007 à 10:43:49  profilanswer
 

oops trop vite pour le choix de catégorie.. pardon. si qqun peut me le déplacé :-)

n°1591855
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-07-2007 à 14:34:20  profilanswer
 

c'est fait mais tu pouvais le faire en modifiant ton 1er message ;)

n°1591861
nORKy
Grmmph...
Posté le 26-07-2007 à 14:46:32  profilanswer
 

ah bon ? mince. j'avais pas vu qu'on pouvait les déplacer !
désolé

n°1591867
FlorentG
Unité de Masse
Posté le 26-07-2007 à 14:55:13  profilanswer
 

Ca me paraît peut-être un peu extrêmement logique que redémarrer apache kill aussi php, nan ? [:dawak] [:dawak]

n°1591878
nORKy
Grmmph...
Posté le 26-07-2007 à 15:05:20  profilanswer
 

je redémarre pas, je fais un reload
Le but de reload est de justement de ne pas coupé les connexions actives (et donc, c'est cencé ne tué aucun des processus fils en cour de travaux)

n°1591879
FlorentG
Unité de Masse
Posté le 26-07-2007 à 15:06:06  profilanswer
 

Comment est configuré php, en module ou en cgi ?

n°1591880
nORKy
Grmmph...
Posté le 26-07-2007 à 15:09:12  profilanswer
 

module

n°1591886
FlorentG
Unité de Masse
Posté le 26-07-2007 à 15:15:56  profilanswer
 

Ca vient peut-être de là ?

n°1591897
nORKy
Grmmph...
Posté le 26-07-2007 à 15:30:16  profilanswer
 

Je viens de le passer en CGI, pareil
Le hic, c'est que si je place un echo 'toto' AVANT, je ne le vois pas.
C'est pour ca que je dis que j'ai l'impression que mon script PHP s'arrete au moment du exec/system (j'ai essayé avec toutes les fonctions possibles), et d'ailleurs, mon exec fonctionne bien, mon apache est bien rechargé

mood
Publicité
Posté le 26-07-2007 à 15:30:16  profilanswer
 

n°1592245
omega2
Posté le 27-07-2007 à 10:24:47  profilanswer
 

Ca n'a pas l'air d'être documenté, et peu de monde en parle sur le net mais un "httpd reload" n'a pas l'air de se contenter de lire les fichiers de configuration d'apache et d'appliquer les nouvelles options. Visiblement, ça tue et relance également tous les modules d'apache.
C'est logique pour deux raisons :
- le but est de prendre en compte tous les fichiers de config et les modules en ont à lire eux aussi quand on les lance
- en modifiant le httpd, on peut très bien enlever des modules qui ont une influence sur les autres modules : il faut qu'ils soient tous au courant du changement
 
Conséquence indirecte de la maneouvre, les traitements en cours dans les modules seront interrompus.
 
En fait, dans la doc, il n'est pas dit que les traitements en cours seront exécuté jusqu'au bout mais que le serveur continuera d'écouter les ports réseaux et de répondre aux demandes (ce qui ne veut pas dire pour autant qu'il répondra dans le dixième de seconde qui suit l'arrivé de la demande, il faut bien que les modules soient relancé)  
 
 
 
Le comportement de ta page est donc logique.
 
PS : Si tu veux être certains que ton script s'arrête à cette étape là, envoie plutôt des données dans une base de donnée, ça sera plus sur qu'un affichage navigateur qui peut être bloqué par une autre couche d'apache.


Message édité par omega2 le 27-07-2007 à 10:26:34
n°1592268
nORKy
Grmmph...
Posté le 27-07-2007 à 10:41:22  profilanswer
 

Mon but est que lorsque je créé ou détruit un virtual host (qui est fait est un fichier .conf que je rajoute dans le répertoire) est de pouvoir le rechargé.
C'est donc infaisable ?
 
Est-il possible de lancé un script shell en background ? (que mon script PHP n'attende pas qu'il soit fini) avec un & ca peut marché ?
Car, avec un script shell, un sleep de 2 secondes et le lancement de mon reload, je devrais y arriver non ?

n°1592276
nORKy
Grmmph...
Posté le 27-07-2007 à 10:53:00  profilanswer
 

Je viens d'essayer avec un script shell
Rien a faire, le script PHP (en CGI) attends que le script shell soit fini
j'ai essayé plusieurs commande :
sudo -u root /root/bin/httpd_realod.sh &
bash -c "exec nohup setsid sudo udo -u root /root/bin/httpd_realod.sh &"
 
rien n'y fait.. :-(
 
Le script shell est un sleep 8 && /etc/init.d/httpd reload


Message édité par nORKy le 27-07-2007 à 10:57:07
n°1592285
nORKy
Grmmph...
Posté le 27-07-2007 à 11:04:31  profilanswer
 

Gagné !
Ca marche avec ca :
exec('bash -c "exec setsid sudo -u root /root/bin/httpd_realod.sh > /dev/null 2>&1 &"');
 
Merci !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] exec -> exit php

 

Sujets relatifs
[Résolu] Affichage variable de champs texte en DreamweaverFenêtre generées "load" "save" automatiquement en pythonQT # Resolu #
[Résolu] [SQL] comment afficher un grand nombre ?[résolu] Exécuter une requête à partir d'un champ
[RESOLU]Fichier pour executer requete et envoyer par emailVBA [Résolu] Passer une fonction en paramètre
(Résolu) Masquer une partie d'un calque[Résolu par voie détournée] Piloter des contraintes d'intégrité
Mails retour automatiques rejetés (résolu) 
Plus de sujets relatifs à : [RESOLU] exec -> exit php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR