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

Complementar la respuestaComplementar la respuesta
Volver al árbol de categoríasVolver al árbol de categorías

Comentarios
Fueron enviados 5 comentarios a la faq
1 comentario no revisado
4 comentarios revisados:
Por: Miguel Angel Alvarez
31/1/05
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.

Por: Luis Franco Vázquez
27/7/06
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.
Por: Juan Manuel Barruffaldi
18/1/07
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()

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

Volver al árbol de categoríasVolver al árbol de categorías
Alojados en el grupo