Foros del Web » Programando para Internet » PHP » CodeIgniter »

Usar sesiones o hacer llamados a la base de datos

Estas en el tema de Usar sesiones o hacer llamados a la base de datos en el foro de CodeIgniter en Foros del Web. La mayoria de las paginas que poseen un registro obviamente necesitan mostrar en pantalla el nombre de usuario y otras cosas.. En primer lugar tenia ...
  #1 (permalink)  
Antiguo 10/02/2013, 23:25
 
Fecha de Ingreso: febrero-2013
Mensajes: 33
Antigüedad: 11 años, 3 meses
Puntos: 2
Usar sesiones o hacer llamados a la base de datos

La mayoria de las paginas que poseen un registro obviamente necesitan mostrar en pantalla el nombre de usuario y otras cosas..
En primer lugar tenia pensado hacer todo mediante sesiones pero ahora me di cuenta que no es muy efectivo ya que si cambio alguna informacion el usuario debera desconectarse y volverse a conectar para actualizar su info..
Entonces modifique mi codigo e hice que cada vez que se quiera utilizar el nombre y algo mas se haga un llamado a la base de datos para obtener todos los datos actualizados pero queria saber si hacer esto de esta forma es efectivo o podria hacerlo mejor:
Código PHP:
Ver original
  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2.  
  3. class Miembros {
  4.  
  5.    
  6.     function __construct()
  7.         {
  8.              $this->CI =& get_instance();
  9.            
  10.         }
  11.         public function Ingresar($usuario, $contrasenia)
  12.         {
  13.            
  14.             $this->CI->db->where('usuario', $usuario);
  15.             $this->CI->db->where('contrasenia', $contrasenia);
  16.             $query = $this->CI->db->get('miembros');
  17.            
  18.             if($query->num_rows() == 1)
  19.             {
  20.                 $obtener = $query->row();
  21.                 $data = array(
  22.                 'id' => $obtener->id,
  23.                 'conexion' => true );
  24.                 $this->CI->session->set_userdata($data);
  25.                 return true;
  26.             }
  27.             return false;
  28.         }
  29.    
  30.    
  31.         public function Datos()
  32.         {
  33.           $data['usuario'] = $this->Obtener('usuario');
  34.           $data['nombre'] = $this->Obtener('nombre');
  35.           $data['apellido'] = $this->Obtener('apellido');
  36.           $data['rango'] = $this->Obtener('rango');
  37.           $data['conexion'] = $this->CI->session->userdata('conexion');
  38.           $data['id'] = $this->CI->session->userdata('id');
  39.          
  40.           return $data;
  41.         }  
  42.    
  43.         public function Obtener($objeto)
  44.         {
  45.             $this->CI->db->where('id', $this->CI->session->userdata('id'));
  46.             $consulta = $this->CI->db->get('miembros');
  47.            
  48.             if($consulta->num_rows() == 1)
  49.             {
  50.                 $obtener = $this->CI->db->get('miembros')->row();  
  51.                 return $obtener->$objeto;
  52.             }
  53.                        
  54.            
  55.            
  56.         }
  57.    
  58.         public function Desconectar()
  59.         {
  60.             $this->CI->session->sess_destroy();
  61.         }
  62.        
  63.         public function Chequear()
  64.         {
  65.             if(isset($this->CI->session->userdata['conexion']))
  66.             {
  67.                 return true;
  68.             }
  69.             else {
  70.                
  71.            
  72.             return false;
  73.             }
  74.         }
  75. }
  76.  
  77. /* End of file Miembros.php */

Basicamente cuando hago llamado a la funcion Datos entonces me devuelve todo actualizado pero no se si esta mal hecho o creen que deberia hacerlo de otra forma..
  #2 (permalink)  
Antiguo 10/02/2013, 23:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Usar sesiones o hacer llamados a la base de datos

Puedes hacer algo conjunto, si usas algo como mem_cache, puedes guardar los datos en un cache en memoria, algo que es muy rápido y efectivo, pero cuando hagan algún update a los datos del usuario, "borras" la entrada del cache.

Luego en tu código checas, que si no existe los datos en la sesión, los lea de la BDD y los inserte en el cache, así tienes lo mejor de los dos mundos
  #3 (permalink)  
Antiguo 11/02/2013, 00:35
 
Fecha de Ingreso: febrero-2013
Mensajes: 33
Antigüedad: 11 años, 3 meses
Puntos: 2
Respuesta: Usar sesiones o hacer llamados a la base de datos

Cita:
Iniciado por GatorV Ver Mensaje
Puedes hacer algo conjunto, si usas algo como mem_cache, puedes guardar los datos en un cache en memoria, algo que es muy rápido y efectivo, pero cuando hagan algún update a los datos del usuario, "borras" la entrada del cache.

Luego en tu código checas, que si no existe los datos en la sesión, los lea de la BDD y los inserte en el cache, así tienes lo mejor de los dos mundos
Estoy leyendo sobre esto y veo que xamp no lo trae y debo instalarlo.

Mientras tanto que diferencia seria usar memcache de las sessiones normales? Porque ahora que lo pienso podria haber editado las sesiones de la misma manera que voy a editar los cache.. A diferencia que el cache lo puedo borrar cada X tiempo automaticamente.

Gracias ^^!


Estuve leyendo un poco y dicen que obviamente las sesiones son para sesiones de usuarios mientras que el cache es para acelerar el procesamiento de la pagina.
El problema en todos los casos es que como en mi aplicacion yo soy quien crea los usuarios y quien los modifica entonces debo transmitir eso a los usuarios y lo unico que me queda es hacer un llamado a la base de datos =/!
Aunque bueno de ultima solo debo asegurarme de colocar bien los datos.. Digamos aqui lo importante no es tanto por el nombre y todo eso sino que es por el "rango" que ocupen cada uno, por si quiero subirle o bajarle a alguien de rango..

De todas formas gracias por tu ayuda porque me sirve y la utilizare =).

Última edición por GonzaFY; 11/02/2013 a las 00:55
  #4 (permalink)  
Antiguo 11/02/2013, 10:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Usar sesiones o hacer llamados a la base de datos

En efecto, tienes que usar un conjunto completo, pero si no dispones de acceso a esas herramientas pues no te queda otra que usar la base de datos.

Todo depende de como y a que nivel vas a escalar tu desarrollo.

Saludos.

Etiquetas: sesiones, usar
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 23:01.