Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Vous avez demandé le commentaire #916408.

Retourner sur le contenu associé.

Re: Durée de vie des objets et connexions permanentes...

Posté par Guillaume Smet (page perso, ) le 25/03/2008 à 14:07. (lien). Évalué à 3.

On se place dans le cas de processus ou de thread ?

L'un ou l'autre suivant le MPM Apache utilisé (prefork ou worker).

Au démarrage de apache toutes les connexions se font d'un coup puis sont partagées entre les sessions php ?

Non. Quand tu crées ta connexion avec un *_pconnect (donc la première fois que le fils va exécuter une page PHP qui fait un appel à une fonction *_pconnect), le fils Apache conserve la connexion pour toute sa durée de vie.

Et lorsque ce fils la meurt, que deviennent les connexions ?

La connexion est fermée. C'est l'un des moyens de garantir que tes connexions vont se fermer une fois de temps en temps. Ca fait du ménage.

Je n'arrive pas a comprendre comment les connexions sont ensuite partagées ?

Elles ne sont pas partagées.

Pour chaque fils Apache et pour un DSN donné, tu as une et une seule connexion.
Toutes les requêtes qui sont traitées par ce fils utilisent la même connexion.
Les autres fils ont leur connexion propre.

Donc 30 fils Apache qui ont au moins fait un _pconnect durant leur vie = 30 connexions persistentes à la base de données. S'ils se sont connectées à 3 bases de données différentes (plusieurs applications avec des bases différentes), ça te fait 3 connexions par fils donc 90 connexions établies.

On en arrive vite à utiliser un pool de connexions entre les serveurs web et la base, du coup (en tout cas pour du PostgreSQL).

Je ne comprends plus rien à PHP ou alors il a grandement évolué dans sa version 5...

Euh, ça fonctionne comme ça depuis au moins les versions 4.0.x (je n'ai pas touché à PHP avant).

[ Répondre ]