Bonjour,
J'emploie une classe PHP qui manipule PDO et j'effectue de nombreuses ouvertures (et fermetures) de connexions SQL, chaque ouverture/fermeture est effectuée pour un certain nombre de requêtes SQL plus ou moins liée à un même traitement.
Aujourd'hui j'ai un doute vis-à-vis de la charge imposée par ces ouvertures/fermetures SQL et j'aimerais savoir quelle est selon vous la meilleure méthode à employer lorsqu'on est dans un environnement de POO (chaque connexion SQL étant instanciée par un objet).
- Solution 1 : Une seule ouverture/fermeture SQL par page Web (ouverture au début du script, fermeture à la fin)
- Solution 2 : Une ouverture/fermeture SQL par groupe de requête (j'ouvre ma connexion SQL, j'effectue mes requêtes puis je ferme ma connexion etc...)
Aujourd'hui j'emploie la solution 2 et j'ai déjà employé les autres solutions. Je vois des inconvénients pour chacune des méthodes qui sont les suivants, corrigez-moi si je me trompe :
- Solution 3 : Une ouverture/fermeture SQL par requête
- Inconvénient Solution 1 : Si je souhaite accéder à plusieurs bases de données sur un même script, mes connexions SQL peuvent donc se chevaucher faisant que l'une des connexions SQL n'est pas forcément utile à un instant T.
- Inconvénient Solution 2 : Il faut toujours s'assurer de la fermeture des connexions SQL après chaque traitements groupés.
J'utilise une classe singleton pour un de mes objets et je n'ai pas encore l'intention de l'employer pour les connexions SQL. Bien qu'il y a un avantage certain à utiliser une singleton je préfère pour le moment m'assurer des ouvertures et fermetures moi même (c'est plus propre dans mes logs).
- Inconvénient Solution 3 : Sur un site "très" dynamique ayant de nombreuses requêtes, autant d'ouverture et de fermeture est probablement "lourd".
Si vous voyez une ou n autres solutions...
Je cherche une optimisation (cf post sur les optimisations PHP&SGBD)
Merci
Partager