Foros del Web » Programando para Internet » PHP »

Verificar conexión mysql antes de cerrar.

Estas en el tema de Verificar conexión mysql antes de cerrar. en el foro de PHP en Foros del Web. Código PHP: <?php // Cierra conexión con la base de datos. function  dboff () {     global  $conn ;     global  $conn_matriz ;           // Cierra la conexión.      if ( $conn )  $conn -> close (); ...
  #1 (permalink)  
Antiguo 26/02/2018, 11:39
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
Pregunta Verificar conexión mysql antes de cerrar.

Código PHP:
<?php
// Cierra conexión con la base de datos.
function dboff()
{
    global 
$conn;
    global 
$conn_matriz;
    
    
// Cierra la conexión.
    
if ($conn$conn->close();
    if (
$conn_matriz$conn_matriz->close();
}
?>
Tengo esta función PHP que lanzo al final de cada página para que me cierre la base de dados si es que está abierta, de ahí la condición.

Pero PHP me lanza siempre este warning cuando no existe o está cerrada:

Código:
PHP Warning: mysqli::close(): Couldn't fetch mysqli in /var/www/vhosts/elite.plus/httpdocs/funciones/dboff.inc on line 9
Qué condición puedo poner para que sólo haga el CLOSE cuando esté la conexión abierta?
  #2 (permalink)  
Antiguo 26/02/2018, 17:29
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Verificar conexión mysql antes de cerrar.

Al parecer, estás cerrando la conexión sin haber ejecutado alguna consulta. Mi sugerencia es que no cierres las conexiones a base de datos, PHP lo hará por sí mismo al terminar de ejecutar el script.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 27/02/2018, 02:07
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
Respuesta: Verificar conexión mysql antes de cerrar.

Cita:
Iniciado por Triby Ver Mensaje
Al parecer, estás cerrando la conexión sin haber ejecutado alguna consulta. Mi sugerencia es que no cierres las conexiones a base de datos, PHP lo hará por sí mismo al terminar de ejecutar el script.
Pero esto no es lo más correcto no? sobre todo para webs de alto transito.
He puesto este código pero ahora me da error fatal:

Código PHP:
<?php
// Cierra conexión con la base de datos.
function dboff()
{
    global 
$conn;
    global 
$conn_matriz;
    
    
// Cierra la conexión.
    
if ($conn->ping()) $conn->close();
    if (
$conn_matriz->ping()) $conn_matriz->close();
}
?>
  #4 (permalink)  
Antiguo 27/02/2018, 14:10
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Verificar conexión mysql antes de cerrar.

No es que sea correcto o no, es opcional, porque PHP se encarga de liberar recursos al finalizar la ejecución del script, esto incluye memoria, cierre de conexiones a base de datos y juegos de resultados (free_result), entre otras cosas.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 08/03/2018, 05:42
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
Respuesta: Verificar conexión mysql antes de cerrar.

Cita:
Iniciado por Triby Ver Mensaje
No es que sea correcto o no, es opcional, porque PHP se encarga de liberar recursos al finalizar la ejecución del script, esto incluye memoria, cierre de conexiones a base de datos y juegos de resultados (free_result), entre otras cosas.
Yo al final de cada archivo siempre termino así:
Código PHP:
    
</html>

<?php
DBoff
();
?>
Podría quitarlo, pero prefiera la opción de comprobar si la conexión está abierta y cerrarla.

¿No hay manera de hacerlo? Hago uso de requires y de Ajax que a su vez ejecutan código y prefiero no borrarlo de todos sitios.

Ping() no funciona da un fatal error y isset() tampoco. No entiendo por qué.
  #6 (permalink)  
Antiguo 08/03/2018, 05:51
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años
Puntos: 6
Respuesta: Verificar conexión mysql antes de cerrar.

Siguiendo las indicaciones de: http://php.net/manual/es/function.unset.php

Voy a probar a eliminar $conn después de cerrar, a ver si el error persiste. En ese caso no debería devolver verdadero:

Código PHP:
Ver original
  1. <?php
  2. // Cierra conexión con la base de datos.
  3. function dboff()
  4. {
  5.     global $conn;
  6.     global $conn_matriz;
  7.    
  8.     // Cierra la conexión.
  9.     if ($conn)
  10.     {
  11.         $conn->close();
  12.         unset($GLOBALS['conn']);
  13.     }
  14.    
  15.     if ($conn_matriz)
  16.     {
  17.         $conn_matriz->close();
  18.         unset($GLOBALS['conn_matriz']);
  19.        
  20.     }
  21. }
  22. ?>
  #7 (permalink)  
Antiguo 08/03/2018, 15:58
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 3 meses
Puntos: 214
Respuesta: Verificar conexión mysql antes de cerrar.

Saludo

Las funciones estan correctas, el problema es que en algún punto
estás cerrando la conexión tempranamente y luego se intenta
realizar una consulta a la base de datos, y como ya esta cerrada,
no puede realizarla.

Revisa con paciencia todas las partes de la aplicación que hagan
funcionalidades a la bd y revisa en que momento se cierran y si
luego del cierre se vuelve a ejecutar algún query, y cambia el orden.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: mysql-error
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 04:55.