Ayuda para cerrar conexiones :(

  • Autor Autor pa3lo022
  • Fecha de inicio Fecha de inicio
P

pa3lo022

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola a todos, anoche no se que me paso que me pregunte, después de muchooo tiempo de desarrollo, si estaba cerrando bien las conexiones y por lo visto parece que no :ambivalence:

Les cuento como hago la conexión, por lo general la pongo en una carpeta de actions/ donde pongo archivos php como conexion, function, etc. y mi conexión la hago así:

Insertar CODE, HTML o PHP:
    $link = mysql_connect("localhost", "root", "");
    mysql_select_db("nombreBase",$link);
    mysql_query("SET NAMES 'utf8'");

y en el raíz u otras carpetas donde haya alguna consulta a la base de datos, la cierro de esta forma:

Insertar CODE, HTML o PHP:
mysql_close($link);

pero ayer se me ocurrio probar si quedan cerradas y parece no, lo probé con este if:

Insertar CODE, HTML o PHP:
if(!$link){
echo 'abierta';
}else{
echo 'cerrada';
}

Alguien me podría decir como puedo cerrar correctamente la conexión.

Eso si, solo lo probé en localhost, no lo probé en la nube.

Muchas gracias por la ayuda.
 
Debes cerrar inmediatamente después de hacer la consulta en el mismo file donde consultas.
 
Debes cerrar inmediatamente después de hacer la consulta en el mismo file donde consultas.

si es lo que hago, inmediatamente después de hacer la consulta, cierro, pero parece que queda abierta
 
Fijate en mysql haciendo SHOW PROCESSLIST; ese comando te muestra si tenes conexiones abiertas o no, creo que es mas confiable que la validación que estas haciendo.
Con respecto a las conexiones abiertas a mi me paso una vez en un servidor windows y IIS con php, pero se resolvió al pasar a Linux y Apache, calculo yo que era por la persistencia del proceso en memoria.
 
Hola que tal? Te recomiendo dejar de utilizar esa extensión de php para conectarte a mysql si estas utilizando una versión de PHP mayor a 5.5 ya que fué deprecada desde dicha versión. Te recomiendo darle una revisada a MySQLi o PDO que son métodos más nuevos y confiables para las conexiones a MySQL.

Por otro lado, volviendo a tu pregunta, veo que tienes mal la validación:

Insertar CODE, HTML o PHP:
if(!$link){
echo 'abierta';
}else{
echo 'cerrada';
}

Tienes al reves tu lógica, $link sería falso cuando no haya conexión.

Saludos
 
Hola que tal? Te recomiendo dejar de utilizar esa extensión de php para conectarte a mysql si estas utilizando una versión de PHP mayor a 5.5 ya que fué deprecada desde dicha versión. Te recomiendo darle una revisada a MySQLi o PDO que son métodos más nuevos y confiables para las conexiones a MySQL.

Por otro lado, volviendo a tu pregunta, veo que tienes mal la validación:

Insertar CODE, HTML o PHP:
if(!$link){
echo 'abierta';
}else{
echo 'cerrada';
}

Tienes al reves tu lógica, $link sería falso cuando no haya conexión.

Saludos

Muchas gracias por tu respuesta.
Si me acaba de salir un error <b>Deprecated</b>: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in
jaja asique tendre que cambiar

Gracias nuevamente
 
Pequeña formula para hacer conexiones seguras.

Hola, como veo tu problema es que no usas unas buenas practicas.

te recomiendo hacer esto 🙂

PHP:
/**
 * Creamos una clase, donde conectaremos a la base de datos
 * Para usarla, remplaza los valores del constructor por tu base de datos
 * te recomiendo hacerlo en otro archivo configurando un define()
 */

  class Connection extends mysqli {

    public function __construct() {

      parent::__construct(DB_HOST,DB_USER,DB_PASS,DB_NAME);
      $this->connect_errno ? die('Error en la conexión a la base de datos') : null;
      $this->set_charset("utf8");

    }
    
    public function rows($query) {

      return mysqli_num_rows($query);
    }

    public function free($query) {

      return mysqli_free_result($query);
    }

    public function search($query) {

      return mysqli_fetch_array($query);
    }

  }

despues de eso, solo tenemos que invocar al archivo

PHP:
/**
 * Pequeño ejemplo de como utilizar el sistema anterior, 
 * Sin usar PDO o usandolo
 */

require '/app/config.php'; // tu archivo de conexion.


  function Users() {

   $db = new Connection();  // Creamos una nueva conexion.
   $sql = $db->query("SELECT * FROM users;"); // Creamos un query, en users.

/**
 * Aqui haces tu codigo, ejemplo consultar el nombre
 * del usuario.
 */


/**
 * Ahora simplemente, cerramos la conexion y la instancia con el siguiente codigo
 * free para librerar la busqueda y close para cerrarla :)
 */

   $db->free($sql);
   $db->close();

 }
 
Atrás
Arriba