PHP : interet du mysql_close() ???
Melaine
-
bluetiger007 -
bluetiger007 -
Bonjour à tous
Petit souci en pho ou plutot demande d'infos :
J'ai un site web qui effectue des requetes dans une DB MySQL.
A chaque fois que j'ai besoin d'accéder aux données de la DB je fais un include(fichier_connexion_DB.php) en premiere ligne de mon fichier, me permettant ainsi d'inclure les données de connexion et j'effectue mes requetes.
FICHIER_CONNEXION_DB.PHP
//initialisation de l'heure
setlocale (LC_ALL, 'fr_FR');
$ecarttime=28800;
$dbhost = "localhost";
$dbname = "xoxoxo";
$dbuser = "yoyoyo";
$dbpasswd = "zozozzo";
$id_connect=MYSQL_CONNECT("$dbhost","$dbuser","$dbpasswd");
echo(mysql_error());
$bdd=mysql_select_db("$dbname");
echo(mysql_error());
Jusqu'ici pas de soucis.
Le gros pb c'est que me site plante de temps en temps, et la seule explication qu'a pu me fournir mon hébergeur c'est le fait que je ne mette pas de fermeture de connexion à ma base, à savoir le fameux mysql_close($db)
Alors j'ai fais ma petite recherche et j'ai pu lire sur divers sites php que "la fonction mysql_close() n'est pas vraiment obligatoire avec un mysql_connect(), car par défaut la connexion sera coupée automatiquement à la fin de l'exécution du script. "
Si qq'un peut m'éclairer sur ce pb, merci d'avance
Melaine
Petit souci en pho ou plutot demande d'infos :
J'ai un site web qui effectue des requetes dans une DB MySQL.
A chaque fois que j'ai besoin d'accéder aux données de la DB je fais un include(fichier_connexion_DB.php) en premiere ligne de mon fichier, me permettant ainsi d'inclure les données de connexion et j'effectue mes requetes.
FICHIER_CONNEXION_DB.PHP
//initialisation de l'heure
setlocale (LC_ALL, 'fr_FR');
$ecarttime=28800;
$dbhost = "localhost";
$dbname = "xoxoxo";
$dbuser = "yoyoyo";
$dbpasswd = "zozozzo";
$id_connect=MYSQL_CONNECT("$dbhost","$dbuser","$dbpasswd");
echo(mysql_error());
$bdd=mysql_select_db("$dbname");
echo(mysql_error());
Jusqu'ici pas de soucis.
Le gros pb c'est que me site plante de temps en temps, et la seule explication qu'a pu me fournir mon hébergeur c'est le fait que je ne mette pas de fermeture de connexion à ma base, à savoir le fameux mysql_close($db)
Alors j'ai fais ma petite recherche et j'ai pu lire sur divers sites php que "la fonction mysql_close() n'est pas vraiment obligatoire avec un mysql_connect(), car par défaut la connexion sera coupée automatiquement à la fin de l'exécution du script. "
Si qq'un peut m'éclairer sur ce pb, merci d'avance
Melaine
A voir également:
- PHP : interet du mysql_close() ???
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
4 réponses
Pour ceux qui ne seraient pas encore au courant, c'est un bug de PHP 5.3.0 et la librairie lib_mysql qui fait planter Apache lorsque la fonction mysql_close est appelée sans paramètre.
Il ne s'agit pas d'un bug de Wamp, mais bien de PHP.
Ce bug a d'ailleurs été corrigé dans la version PHP 5.3.1 sorti récemment.
La solution la plus propre n'est donc pas de supprimer la fonction mysql_close, mais de lui passer le paramètre $link, $connect, bref, la variable renvoyée par la fonction mysql_connect comme montré ci-dessus.
Il ne s'agit pas d'un bug de Wamp, mais bien de PHP.
Ce bug a d'ailleurs été corrigé dans la version PHP 5.3.1 sorti récemment.
La solution la plus propre n'est donc pas de supprimer la fonction mysql_close, mais de lui passer le paramètre $link, $connect, bref, la variable renvoyée par la fonction mysql_connect comme montré ci-dessus.
Alors je tiens à signaler que désormais, sur la dernière version de wamp, en local, ce mysql_close() conduit à une erreur de apache. idem pour split, et sans doute d'autres fonctions php. :(
Bonsoir,
Je viens de télécharger le dernier Wampserver, avec les dernières versions php et mysql, je confirme que la fonction mysql_close() plante le serveur apache.
Je dois faire le tour de toutes les pages de mon site faisant appel à cette fonction pour la supprimer, je trouve ce bug assez étrange.
Qui d'autre rencontre ce problème, et qui aurait une solution miracle ?
Je viens de télécharger le dernier Wampserver, avec les dernières versions php et mysql, je confirme que la fonction mysql_close() plante le serveur apache.
Je dois faire le tour de toutes les pages de mon site faisant appel à cette fonction pour la supprimer, je trouve ce bug assez étrange.
Qui d'autre rencontre ce problème, et qui aurait une solution miracle ?
normalement, le mysql_close sert à libérer l'espace mémoire pris sur le serveur par la conection MySQL..Après je peux pas t'en dire + ...
Quand on fait des requetes sur un serveur MySQL il y a de la RAM occupée :
- par la connection au serveur
- par la requete en elle-même.
La connection est lancée par mysql_connect(),
Ensuite selection de la base à laquelle se connecter mysql_select_db()
A ce moment là on est connecté au serveur et à une certaine base de données.
mysql_close ferme la connection au serveur (libérant ainsi l'espace mémoire de connection), il se fait automatiquement à la fin de chaque script (mais je préfère le rajouter dans un fichier inc de deconnexion appelé via un include, à la fin du script).
Ceci étant je n'ai jamais entendu dire qu'un mysql_close() était obligatoire!!!
La réponse de ton heberger PHP me semble vraiment bizarre...
Si tu fais de grosses requetes (qui demandent du temps et de la mémoire), il est nécéssaire le libérer l'espace mémoire pris sur le serveur à la fin de chaque requete.
ce que je fais généralement (pour par exemple une requete qui travaille sur ue table de 2 millions de lignes) c'est :
- requete en elle meme
- je stocke toutes les lignes dans un tableau
- je vide ensuite ma requete via "mysql_free($query)"
- je travaille sur le tableau (ou sur le fichier crée à parti du tableau suivant le nombre de lignes).
Voila donc les deux truc simportants pour gérer les requetes (d'autres astuces possibles je pense).
La réponse m'apparait quand meme saugrenue...
- par la connection au serveur
- par la requete en elle-même.
La connection est lancée par mysql_connect(),
Ensuite selection de la base à laquelle se connecter mysql_select_db()
A ce moment là on est connecté au serveur et à une certaine base de données.
mysql_close ferme la connection au serveur (libérant ainsi l'espace mémoire de connection), il se fait automatiquement à la fin de chaque script (mais je préfère le rajouter dans un fichier inc de deconnexion appelé via un include, à la fin du script).
Ceci étant je n'ai jamais entendu dire qu'un mysql_close() était obligatoire!!!
La réponse de ton heberger PHP me semble vraiment bizarre...
Si tu fais de grosses requetes (qui demandent du temps et de la mémoire), il est nécéssaire le libérer l'espace mémoire pris sur le serveur à la fin de chaque requete.
ce que je fais généralement (pour par exemple une requete qui travaille sur ue table de 2 millions de lignes) c'est :
- requete en elle meme
- je stocke toutes les lignes dans un tableau
- je vide ensuite ma requete via "mysql_free($query)"
- je travaille sur le tableau (ou sur le fichier crée à parti du tableau suivant le nombre de lignes).
Voila donc les deux truc simportants pour gérer les requetes (d'autres astuces possibles je pense).
La réponse m'apparait quand meme saugrenue...
Moui, j'ai jamais utilisé mysql_close() ....
Je suppose que ça sert plutôt pour des scripts Php hors des pages web et dont l'execution est plus longue, ou encore pour des scripts qui se connectent à plusieurs serveurs de base de données à la fois et qui ont besoin de libérer régulièrement les ressources.
Mais normalement à la fin du script, cette connexion est fermée automatiquement.
Je suppose que ça sert plutôt pour des scripts Php hors des pages web et dont l'execution est plus longue, ou encore pour des scripts qui se connectent à plusieurs serveurs de base de données à la fois et qui ont besoin de libérer régulièrement les ressources.
Mais normalement à la fin du script, cette connexion est fermée automatiquement.