Es necesario usar mysql_free_result() y mysql_close()?

Programando en PHP, ¿es necesario cerrar las conexiones con MySQL y los recordsets generados con las consultas?

La FAQ Es necesario usar mysql_free_result() y mysql_close()? tiene

Pertenece a la categoría:
Pregunta
Programando en PHP, ¿es necesario cerrar las conexiones con MySQL y los recordsets generados con las consultas?
Respuesta de Gabriel Ginard
Mysql_close() se usa para cerrar la conexión a la Base de datos y es necesario hacerlo para no sobrecargar al servidor.


Para pocas visitas si te lo dejas no es importante, pero si tienes muchas visitas podría llegar a colapsarse el servidor y que aparezca el típico mensaje de no hay suficientes conexiones para mostrar la pagina, o algo así ;-)



Mysql_free_result() se usa para liberar la memoria empleada al realizar una consulta, y lo mismo que lo anterior, depende del numero de visitas que tengas.


Teóricamente el servidor tiene técnicas para ir liberando la memoria que ya no se emplea, pero puede que no la libere a tiempo, y tengamos un disgusto por consumo de recursos. Imagínate que llegas a emplear toda la memoria y empieza a usar el disco duro como memoria Swap, el sistema se haría lentísimo



De hecho, a veces, yo mismo me olvido de incluirlas al final de cada página, y cuando me doy cuenta lo añado, así que es mejor usar una pequeña pagina de plantilla donde incluyas estas funciones al final de cada pagina

Volver al árbol de categoríasVolver al árbol de categorías

Comentarios

Miguel Angel Alvarez

31/1/2005
Hola. Simplemente escribo para confirmar lo que ha apluntado Gabriel. Por nuestra experiencia, es muy importante cerrar las conexiones.

Nosotros tuvimos hace tiempo diversos problemas de saturación de la base de datos, que se resolvieron al asegurarnos que en todas las páginas se cerraban las conexiones.

Luis Franco Vázquez

27/7/2006
En principio no sería necesario usarlas si no estás implementando conexiones permanentes a una base de datos, ya que el motor de php se encarga de liberar los recursos al acabar el script. En el caso de mysql la conexión permanente se utiliza mediante mysql_pconnect() y la no permanente mediante mysql_connect().
Otra cosa es que sea una buena práctica.

Juan Manuel Barruffaldi

18/1/2007
Bueno, justamente es un tema que no es definitivo y podría generar controversia. En el manual oficial de PHP dice: "Normalmente no es necesario ya que la aperturas no-persistentes son cerradas automaticamente al final de la ejecución del script.
"

Entre los comentarios del sitio oficial de PHP:
http://ar.php.net/manual/es/function.mysql-close.php

Se puede notar que no sólamente no es necesario, sino que muchas veces podría resultar perjudicial llamar a mysql_close()

Andruqui

12/4/2007
No es necesario invocar mysql_close.
Como bien dicen más arriba, la conexión a BD se cierra sola al finalizar el script invocado (a menos de conexiones permamentes).
Saludos

cesar_luis-498906

18/8/2009
solo sugerible
no es necesario, depende del proyecto que se este realizando, pero siempre es bueno usar el mysql_free_result() para liberar la memoria...

sppica

20/11/2012
¿Tenéis solución a mi problema?
¡Buenas tardes chic@s!
Tengo un pequeño gran problema...y es que al parecer mi web no funciona a veces porque hay demasiadas conexiones a la misma, ¿cómo puedo solucionar esto?

En el soporte técnico del servidor me dicen:

"Cerrar todas las conexiones a la base de datos después de cada consulta y revisar los scripts para que no sobrepasen el número de conexiones con la base de datos"

Pero me quedo igual que si no me dicen nada....¿alguien me ayuda?

Gracias!!
FAQ relacionadas
Volver al árbol de categoríasVolver al árbol de categorías