Quand utiliser mysql_close() ?

Eléphant du PHP | 78 Messages

16 févr. 2008, 22:59

Bonjour,

J'ai lu sur un article (http://www.vulgarisation-informatique.c ... -mysql.php) qu'il était plus intéressant de fermer une connexion mySQL après la requête.

Mais sur mon site j'ai des includes donc mes requêtes sont exécutées à des endroits différents dans mes scripts. Si je ferme la connexion dans une des pages incluses elle va peut-être gêner le script d'un autre fichier inclus.

En général j'ouvre ma connexion en début du fichier index.php et je la ferme à la fin du fichier index.php.

Sur le même article j'ai vu ça :
Il est important de signifier que la connexion sera automatiquement fermée dès la fin du script, inutile donc de mettre un mysql_close() à la dernière ligne.
Voici donc ma question :

Vaut-il mieux se connecter et se déconnecter à chaque requête ou se connecter et se déconnecter qu'une fois ?

Et une autre question pour la route :

Sur un site "standard" (requete SELECT principalement) une connexion persistante est-elle préférable ?

Merci de vos réponses.
Cordialement,
Kaimite

ViPHP
ViPHP | 5924 Messages

17 févr. 2008, 02:11

Vaut-il mieux se connecter et se déconnecter à chaque requête ou se connecter et se déconnecter qu'une fois ?
Il n'est pas très clair cet article, et peut facilement amener à faire des erreurs. Alors, il ne faut qu'une seule connexion par page, c'est très mauvais de jouer à l'ouverture/fermeture, et je pense qu'il vaut mieux laisser une connexion ouverte sur tout le script et gaspiller une connexion (laquelle ne servira pas et ne surchargera pas le serveur), que ouvrir et fermer à chaque requète, même si on aura l'impression d'être plus gentil avec le serveur parce que l'on ne dépassera plus le maximum de connexions…

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 févr. 2008, 02:13

Alors pour essayer de répondre dans l'ordre, à la question "quand faut-il utiliser mysql_close() ?" la réponse est "quand tu n'as plus besoin d'utiliser mysql" :)

En gros, pour te donner une idée, l'ouverture d'une connexion a la base de donnée est un traitement assez long. Du coup, hors de question d'ouvrir une connexion, d'exécuter une requête, de refermer la connexion et de découvrir qu'il faut à nouveau en ouvrir une.

En revanche, dès que ta dernière requête est passée, au plus tôt tu fermeras la connexion, au plus tôt tu libereras les ressources, permettant de meilleurs temps de réponse et plus de visiteurs simultanés :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 78 Messages

17 févr. 2008, 09:52

Merci pour vos réponses.

Le soucis est donc de savoir quelle est la dernière requete quand pour afficher une page il y a plusieurs includes !

Bon w-e :)
Cordialement,
Kaimite

vitrix
Invité n'ayant pas de compte PHPfrance

16 nov. 2011, 07:04

a la fin de index.php tu ajoute mysql_close(); ca ne fera pas du mal même si ta des include ils sont lisses par php avant :D