Quelle script PHP est en cours d execution ?

Fermé
lostintranslation Messages postés 8 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 6 avril 2010 - 31 mars 2010 à 17:50
lostintranslation Messages postés 8 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 6 avril 2010 - 31 mars 2010 à 18:18
Bonjour,

En ce moment je cherche a trouver une solution pour connaitre quelle script PHP est utilisé par un processus Apache.

Si je fait un ps -ef | grep apache :

apache 31689 31676 0 12:06 ? 00:00:00 /usr/sbin/apache2 -D PHP5 -D INFO -D LANGUAGE -D LDAP -D AUTH_LDAP -D UMASK -D STATUS -d /usr/lib/apache2 -f /etc/apache2/httpd.conf -k start

Mais cela n indique en rien quelle script est en cours d excution.

Je suis loin d etre un expert PHP ou apache, mais l idée c est juste de trouver quelle script plante et fait prendre des ressources a un processus apache.

fabien

3 réponses

kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
31 mars 2010 à 18:02
Bonjour,

Le mieux je pense est effectivement de commencer par lister l'ensemble des processus qui tournent sur la machine.
Idéalement, pour un processus indépendant, je dirai qu'il faudrait récupérer le PID du père et faire un tri ensuite sur l'ensemble des processus actifs par rapport à ce PID (et la colonne PPID des processus actifs pour savoir quels sont ceux qui sont les fils de ton processus père)

Mais je ne suis pas certain que les scipts PHP soient réellement détectés comme des processus machine à part entière, je n'ai jamais eu besoin d'y jeter un oeil, peut-être quelqun peut-il confirmer ?

Une alternative à ce traitement via commande peut être la commande suivante:
pidof "nom du programme"

Par exemple : pidof apache

Mais il faut voir si elle fonctionne sous ton OS, ou si tu peux avoir une équivalent.

Si tout cela ne fonctionne pas, il faut alors te tourner vers un outil apache permettant de te le faire (? supposition)
0
lostintranslation Messages postés 8 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 6 avril 2010
31 mars 2010 à 18:11
Bonjour,

Comme les scripts php sont interprété, il non pas de PID.
Donc pour le coup c est pas possible par les méthodes classic :pidof,fuser, lsof etc etc ...

Cette question viens du fait qu il environ 30 process Apache qui tourne, il arrive que l un des processus Apache plante ou mange trop de CPU...

Du coup je kill le process Apache.

Mais le vrais probleme c est que je sais pas quelle script a fait planter le processus.

Alors là je suis bien bloquer pour aller faire du de-bug.

Je vais voir un outil cote apache,

En tout cas merci,

FAbien
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
31 mars 2010 à 18:14
Ok, mais dans ce cas là, ne peux-tu pas mettre un system de log à l'intérieur de tes scripts PHP te permettant ainsi de voir lequel plante éventuellement ?

S'il ne s'agit pas de tes codes (tu maintiens juste la structure par exemple) tu as peut-être la possibilité de voir avec l'équipe de développement PHP ?

Dans tous les cas, c'est certains que pour tuer les scripts PHP, à moins de trouver une interface d'administration Apache, tu ne pourras (je pense) pas le faire.

Bonne chance.
0
lostintranslation Messages postés 8 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 6 avril 2010
31 mars 2010 à 18:18
Exactement, je ne fait que maintenir les serveurs en gros.
Il y a des centaines de scripts, je vais voir avec un dev pour voir ce qui est possible.
Mais cela me semble compliquer de reprendre tout les scripts.

Je tiens bon, il y a forcement une solution.
0