A voir également:
- PHP : interet du mysql_close() ???
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Php?id=1 - Forum PHP
- Retour à la ligne php ✓ - Forum PHP
- Retour a la ligne avec Echo comment faire ? - Forum Webmastering
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 ?
Zep3k!GnO
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
6 févr. 2006 à 12:03
6 févr. 2006 à 12:03
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 + ...
Misdrhaal
Messages postés
49
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
23 février 2006
16
6 févr. 2006 à 12:17
6 févr. 2006 à 12:17
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...
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
5 février 2025
1 526
6 févr. 2006 à 21:06
6 févr. 2006 à 21:06
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.