Foros del Web » Programando para Internet » PHP »

Problemas al no usar mysql_free_result() y mysql_close()

Estas en el tema de Problemas al no usar mysql_free_result() y mysql_close() en el foro de PHP en Foros del Web. Alguien puede enumerarme los problemas que representa el no usar en los script las funciones: mysql_free_result(); mysql_close();...
  #1 (permalink)  
Antiguo 24/08/2003, 16:22
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 15 años, 5 meses
Puntos: 0
Problemas al no usar mysql_free_result() y mysql_close()

Alguien puede enumerarme los problemas que representa el no usar en los script las funciones:

mysql_free_result();
mysql_close();
  #2 (permalink)  
Antiguo 24/08/2003, 16:39
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 15 años, 5 meses
Puntos: 0
Tengo una confución.... en el script a continuación, donde es valido usar mysql_free_result();


Código PHP:
<?
   
require("configuracion.inc");
   
mysql_connect($host,$usuario,$passwd);
   
mysql_db_query($db,"select inicio_titulo, inicio_cuerpo from pag_contenido");


   
//miramos si hay registros en nuestra tabla
   
$ssql "select inicio_titulo, inicio_cuerpo from pag_contenido";
   
$result mysql_query($ssql);

   
//si existen registros los actualizamos
   
if (mysql_num_rows($result) != 0) {
   
$ssql "update pag_contenido set inicio_titulo = '$titulo', inicio_cuerpo = '$cuerpo'";
   }
   
//si no existen insertamos los registro correspondiente en nuestra tabla
   
else {
   
$ssql "insert into pag_contenido (inicio_titulo,inicio_cuerpo) values ('$titulo','$cuerpo')";
   }
   
//ejecutamos la sentencia sql
   
mysql_query($ssql) or die(mysql_error());
   
   echo 
"Registros Actualizados para la página Inicio";

mysql_close();

?>
  #3 (permalink)  
Antiguo 24/08/2003, 18:11
Avatar de sci-fi  
Fecha de Ingreso: marzo-2002
Mensajes: 157
Antigüedad: 15 años, 9 meses
Puntos: 0
hola,

bueno mysl_close() debería ser siempre usado, es para cerrar la conexión con el servidor MySQL abierta con mysql_connect(). Obviamente la usás cuando terminaron todas las llamadas a funciones mysql. Eso sí es importante; mysql_free_result() en el caso del script de arriba no es necesario. Se usa en scripts más largos y que requieren de mayor memoria y procesamiento, porque el free result se hace automáticamente, si el script es más largo y más complicado, entonces ahí podrías usar esa función si te preocupa la rapidez del script.

saludos
  #4 (permalink)  
Antiguo 26/08/2003, 22:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tanto el liberar memoria como el cerrar conexiones a BD (ojo) no persistentes .. ya lo hace PHP por defecto al terminar la ejecución de un script ...

Enel caso concreto (si es ese todo el código de ese script) .. No sería necesario ni liberar memoria de la consulta realizada (con mysql_free_result() ) ni cerrar la conexión a la BD .. Pero, no es mála constumbre hacerlo.

EL caso de usar mysql_free_result() .. siempre que tengas algun proceso posterior que no use dicho resultado, es bueno liberar memória .. aunque sean unos microseguntos .. tu servidor te lo agradecerá.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 26/08/2003, 22:52
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 15 años, 5 meses
Puntos: 0
Bueno... lo de cerrar la conexión a la DB me preocupa pues el otro día tenia este error en mi web:

Warning: mysql_connect(): Host 'xx.xx.xx.xx' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts'

xx.xx.xx.xx=ip

Según me comento un amigo ese error se podia deber a que no estaba usando mysql_close() ...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:22.