Bonjour,

Je file un coup de main à un pote qui gère une application PHP utilisant une base de données PostGreSQL.

Nous rencontrons un souci avec les connexions à la base (je précise que les connexions persistantes ne sont pas activées) : lorsque l'on effectue 2 connexions successives, la seconde reprend le "Resource id" de la précédente.

Un petit extrait de la console pour éclairer le problème :
DB=Resource id #27
DB after disconnect=
DB after reconnect=Resource id #29
Après une déconnexion explicite, la reconnexion fourni bien un nouvel ID de connexion à la base, tout va bien.

Mais ensuite, j'appelle une fonction qui tente d'ouvrir une nouvelle connexion (elle ne vérifie pas s'il y a déjà une connexion d'ouverte) :
Function DB after connect=Resource id #29
La connexion retournée est la même que la précédente ! Pourtant, les connexions persistantes sont bien désactivées !
Ensuite, à la fin de la fonction, un appel "disconnect" est effectué (ce qui est normal me direz-vous), mais du coup dans la suite du script parent toutes les requêtes échouent car la connexion est désormais fermée !

Ne serait-il pas possible de forcer la création d'une nouvelle connexion à chaque appel à la fonction "connect" ? Quite à provoquer des erreurs "pas assez de connexions" dans l'application (l'objectif est de corriger le souci sans toucher au code).

Merci d'avance !

Edit : OK nous avons trouvé ! En ajoutant le paramètre PGSQL_CONNECT_FORCE_NEW à la fonction pg_connect, on force l'ouverture d'une connexion à chaque appel.