IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

A quoi correspond un child sous Apache - php ?


Sujet :

Apache

  1. #1
    Membre habitué
    Inscrit en
    Mai 2004
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 129
    Points : 127
    Points
    127
    Par défaut A quoi correspond un child sous Apache - php ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [Mon Jul 10 11:56:47 2006] [notice] Parent: Created child process 1204
    [Mon Jul 10 11:56:48 2006] [notice] Child 1204: Child process is running
    ...
    [Mon Jul 10 13:10:52 2006] [notice] Child 1204: Process exiting because it reached MaxRequestsPerChild. Signaling the parent to restart a new child process.
    Bonjour à tous,

    Voila, à 11h56, je lance un script php assez long et apache crée le child 1204.
    1h plus tard, le child plante sous pretexte que MaxRequestsPerChild est dépassé.

    Je travaille en local et une seule requete http est executée, je n'arrive pas a comprendre ce plantage.

    A quoi correspond un child sous apache ? Et a quoi correspond une requete ?

    Merci par avance

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Les child processes sont les différents processus (=programmes en cours d'exécutions) qui constituent le serveur web.
    Les requêtes sont les demandes de page web par les navigateur, pour faire simple.
    Ton fichier de log indique juste que le processus en question a bien servi et qu'il est remplacé (pour éviter les fuites de mémoire, je présume).

    Tu as réellement un plantage à ce moment-là ??

  3. #3
    Membre habitué
    Inscrit en
    Mai 2004
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 129
    Points : 127
    Points
    127
    Par défaut
    En fait, j'ai un plantage aléatoire relatif à la mémoire. Le script php traite des tableaux très volumineux puis paf, aléatoirement, le script plante sur un "fatal error : emalloc()".

    Sur certains serveurs, le script tourne parfaitement. Sur d'autres, apparait cette erreur aléatoire alors que les config apache sont les memes mais pas les conditions(Plusieurs scripts sont éxecutés à intervalles différentes dans le cas ou on a un plantage emalloc() ).

    Le problème du log ci-dessus n'est vraiment un problème, il s'agit plus d'un mauvais parametrage de Apache. Comme quoi, quand on connait pas, on bidouille pour savoir comment ca marche

    En approfondissant le problème, il se trouve le problème serait lié à la config Apache et c'est pourquoi je me renseigne sur les notions "ambigues" utilisées dans les docs.

    Alors, si j'ai bien compris, le child serait similaire à un bind() qui traiterait au moins une requete http.

    Prenons maintenant
    ThreadsPerChild 250
    MaxRequestsPerChild 0

    Le MaxRequestsPerChild est à 0, le child ne s'éteint donc jamais(il faudra surement le modifier dans mon cas). Mais à quoi correspond un threads ?
    Je m'excuse de poser des questions comme ca, mais d'un système à l'autre, les définitions ne sont pas forcement les memes.

    Est ce l'appel d'une fonction "ma_fonction_php()" ? D'un script php tout entier ?

    Merci

  4. #4
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Un thread est un "fil d'exécution" à l'intérieur d'un processus. Pour faire très simple, c'est un autre niveau de parallélisation (l'OS peut exécuter plusieurs processus en parallèle, le processus a plusieurs threads en parallèle).
    Les threads d'un même processus partagent le même espace mémoire.

  5. #5
    Membre habitué
    Inscrit en
    Mai 2004
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 129
    Points : 127
    Points
    127
    Par défaut
    Si j'ai bien compris, pour une page index.php on a :

    On lance la requete http

    Apache l'acceuille avec son child

    Le child traite la requete et execute le script index.php dans un thread.

    On est bien d'accord, l'appel des fonctions contenues dans index.php( mafonction1() mafonction2(), etc. ) ne génèrera pas d'autres threads. Tout sera gérer dans ce même thread...

    Merci de m'apporter ta lanterne

    Connais tu un site ou, justement, ces notions sont schématisées ?

  6. #6
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par hackrobat
    On est bien d'accord, l'appel des fonctions contenues dans index.php( mafonction1() mafonction2(), etc. ) ne génèrera pas d'autres threads. Tout sera gérer dans ce même thread...
    Non les appels de fonction ne lancent pas de nouveaux threads je crois, il me semble que c'est les requêtes HTTP qui créent les threads (mais là on commence à sortir grave de mes compétences )

  7. #7
    Membre habitué
    Inscrit en
    Mai 2004
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 129
    Points : 127
    Points
    127
    Par défaut
    oui, tu as raison, un child ne génére pas plus d'un seul thread(fil d'éxecution).

    Merci pour tout en tout cas de m'avoir apporter ton aide

    Finallement mon problème ne se situe peut etre pas là.

    Bonne fin d'apres midi à toi

  8. #8
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par hackrobat
    oui, tu as raison, un child ne génére pas plus d'un seul thread(fil d'éxecution).
    J'ai pas dit ça, d'ailleurs c'est faux, c'est configurable avec la directive MaxThreadsPerChild dans le httpd.conf

  9. #9
    Membre habitué
    Inscrit en
    Mai 2004
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 129
    Points : 127
    Points
    127
    Par défaut
    Imbroglio

    Ce que je voulais dire par là, c'est que pour une réquete http, le child ne génère pas plus d'un thread. Mais je n'ai pas dis non plus que le child ne peut pas gérer plus d'un thread( par défaut, il peut en gérer 25)

    Pour une nouvelle requete http et 25 threads non terminés, apache generera un 2e child et un nouveau thread puis ainsi de suite tant que les autres threads ne sont pas terminés.

    C'est vrai que je n'ai pas détaillé ma phrase

Discussions similaires

  1. [Clavier] caractères qui générent des erreurs sous Apache/PHP/MySQL
    Par kolby dans le forum Périphériques
    Réponses: 1
    Dernier message: 12/03/2013, 22h45
  2. Problème d'affichage des images sous apache/php
    Par kikoo_of_dijon dans le forum Apache
    Réponses: 9
    Dernier message: 03/11/2007, 16h24
  3. Problème formulaire PHP sous Apache Windows
    Par nicorico dans le forum Apache
    Réponses: 4
    Dernier message: 29/03/2007, 14h35
  4. Réponses: 1
    Dernier message: 07/01/2007, 10h46
  5. Apache+PHP+MySql sous FreeBSD
    Par soumou dans le forum Apache
    Réponses: 1
    Dernier message: 01/04/2006, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo