Retroceder   Foros del Web > Programación para sitios web > PHP > PHP orientado a objetos

Respuesta
 
Herramientas Desplegado
Antiguo 01-abr-2008, 08:22   #1 (permalink)
alaintm no se puede cailificar en este momento
 
Avatar de alaintm
 
Fecha de Ingreso: marzo-2007
Mensajes: 80
Analizis de Clase

He creado esta clase empleando mysqli para mostrar los usuarios activos en un sitio y necesito su sugerencias para optimizarlo lo más posible para su empleo en futuros proyectos de nuestro centro.
Antes de su creación comencé a crear una clase para el manejo de las BD pero como empleo mysqli me parecio una redundancia su creación, es correcta esta decisión?

Clase UsuariosEnLinea

Código PHP:
<?php

  
/**
  *
  * Conexion a db mysql
  *
  * @author Alain Turiño Mena
  * @link alaintm@ipichcb.rimed.cu
  * @copyright Copyleft GNU/GPL.
  *
  */

  
$sevidor "localhost";
  
$usuario "usuarios";
  
$clave   "clave";
  
$bd      "bd";

  class 
UsuariosEnLinea{
    
    public function 
__construct(){
      global 
$servidor$usuario$clave$bd;

      
$mysql          = new mysqli($servidor$usuario$clave$bd);
      
$ip             ip2long($_SERVER["REMOTE_ADDR"]);
      
$tiempo_limite  300;
      
$tiempo_actual  time();

      
$mysql->query("DELETE FROM usuariosenlinea WHERE tiempo < $tiempo_actual - $tiempo_limite");

      if(
$mysql->query("SELECT ip FROM usuariosenlinea WHERE ip = $ip") == 0){
         
$mysql->query("UPDATE usuariosenlinea SET tiempo = $tiempo_actual WHERE ip = $ip");
      }
      else{
         
$mysql->query("INSERT INTO usuariosenlinea (ip, tiempo) VALUE ('$ip','$tiempo_actual')");
      }

      
$usuarios_conectado $mysql->query("SELECT ip FROM usuariosenlinea");

      echo 
$usuarios_conectado->num_rows;

      
$usuarios_conectado->close();

      
$mysql->close();
    }
  }
?>
alaintm está desconectado   Responder Citando
Antiguo 01-abr-2008, 09:02   #2 (permalink)
Moderador
GatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy pronto
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: Queretaro, Mexico
Mensajes: 11.600
Re: Analizis de Clase

1.- No uses variables globales cuando estas usando programación orientada a objetos, usa el patrón Registry o una clase de configuración.
2.- El calculo para hacer el "purge" lo puedes hacer en PHP, no se lo dejes completo al SQL.
3.- Seria buena idea que guardaras el valor de cuantos están conectados para poderlo usar después y no tener que estar re-calculando el valor para mostrarlo varias veces en la pagina.

Saludos.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 01-abr-2008, 09:13   #3 (permalink)
alaintm no se puede cailificar en este momento
 
Avatar de alaintm
 
Fecha de Ingreso: marzo-2007
Mensajes: 80
Re: Analizis de Clase

Cita:
Iniciado por GatorV Ver Mensaje
1.- No uses variables globales cuando estas usando programación orientada a objetos, usa el patrón Registry o una clase de configuración.
2.- El calculo para hacer el "purge" lo puedes hacer en PHP, no se lo dejes completo al SQL.
3.- Seria buena idea que guardaras el valor de cuantos están conectados para poderlo usar después y no tener que estar re-calculando el valor para mostrarlo varias veces en la pagina.

Saludos.
No entiendo cuando te refieres al patron Registry y con respecto a una clase de configuración lo que entiendo es que cree una clase donde su objetivo se tener los valores de configuración

Y con respecto al purge no logro captar la idea.

Agradezco de antemano tu ayuda.
alaintm está desconectado   Responder Citando
Antiguo 01-abr-2008, 09:47   #4 (permalink)
Moderador
GatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy pronto
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: Queretaro, Mexico
Mensajes: 11.600
Re: Analizis de Clase

Puedes buscar en Google por el patrón Registry, es básicamente una clase que se encarga de llevar un registro.

En tu Delete tienes:
Código:
DELETE FROM usuariosenlinea WHERE tiempo < $tiempo_actual - $tiempo_limite
Eso lo puedes calcular directo desde PHP:
Código PHP:
$aborrar $tiempo_actual $tiempo_limite;
$mysql->query("DELETE FROM usuariosenlinea WHERE tiempo < $aborrar"); 
Saludos.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 01-abr-2008, 10:02   #5 (permalink)
alaintm no se puede cailificar en este momento
 
Avatar de alaintm
 
Fecha de Ingreso: marzo-2007
Mensajes: 80
Re: Analizis de Clase

Hice las primeras dos variaciones que me sugeriste, pero la tercera cuando te refieres a almacenar el resultado te refieres a crear una instancia del objeto y que este llame a una función que muestre el resultado n veces?

Aquí te muestro las variaciones.

Código PHP:
class UsuariosEnLinea{

    public function 
__construct($servidor$usuario$clave$bd){

      
$mysql                 = new mysqli($servidor$usuario$clave$bd);
      
$ip                       ip2long($_SERVER["REMOTE_ADDR"]);
      
$tiempo_limite     300;
      
$tiempo_actual    time();
      
$tiempo_conectado $tiempo_actual $tiempo_limite;

      
$mysql->query("DELETE FROM usuariosenlinea WHERE tiempo < $tiempo_conectado");

      if(
$mysql->query("SELECT ip FROM usuariosenlinea WHERE ip = $ip") == 0){
         
$mysql->query("UPDATE usuariosenlinea SET tiempo = $tiempo_actual WHERE ip = $ip");
      }
      else{
         
$mysql->query("INSERT INTO usuariosenlinea (ip, tiempo) VALUE ('$ip','$tiempo_actual')");
      }

      
$usuarios_conectado $mysql->query("SELECT ip FROM usuariosenlinea");

      echo 
$usuarios_conectado->num_rows;

      
$usuarios_conectado->close();

      
$mysql->close();
    }
  }

  
$ul = new UsuariosEnLinea($servidor$usuario$clave$bd); 
alaintm está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 15:59.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93