Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-04-2006
leflaco leflaco is offline
Registrado
 
Registrado: nov 2005
Posts: 5
Poder: 0
leflaco Va por buen camino
Concurrencia

Buenas,
Estoy realizando un sistema web con php y mysql y me queda un tema por resolver: La concurrencia de varios usuarios a un registro. La verdad que no se como hacerlo si alguien me puede dar una mano estare muy agradecido.

Saludos
Responder Con Cita
  #2  
Antiguo 20-04-2006
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.635
Poder: 10
Emilio Va por buen camino
Durante bastante tiempo hice uso de un ficherito de texto para el tema de los bloqueos, es decir se trata de hacer una secuencia en la que obligas a los usuarios a ir en fila india.

Abres un ficherito de texto, bloqueas el ficherito, hace tus inserts o updates, desbloqueas el fichero de texto.

De esta forma si un usuario intenta acceder simultanemante deberá esperar a que el fichero este desbloqueado.

Otra forma de hacerlo es enviar todas las consultas a una tabla, y tener un proceso ejecutándose constantemente que mira si hay registros en la tabla, si los hay, se encarga de ejecutar las sentencias SQL guardadas en la tabla, de esta forma también te aseguras que siguen un orden.
__________________
Saludos
Emilio
Responder Con Cita
  #3  
Antiguo 21-04-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pero, si se trata de muchos accesos, este ficherito ¿no se convierte en un cuello de botella?

// Saludos
Responder Con Cita
  #4  
Antiguo 23-04-2006
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.635
Poder: 10
Emilio Va por buen camino
Cita:
Empezado por roman
Pero, si se trata de muchos accesos, este ficherito ¿no se convierte en un cuello de botella?
Con muchos muchísimos es posible que sí, aunque a mi nunca me ha dado problemas, en realidad la razón del ficherillo es la de simular una transacción en sistemas que no te permiten hacer uso de rollback y commit, lease (iSerires con DB2)+(Linux con DbConnect+PHP), muy a pesar de la pasta que cuesta esta combinación, para hacer uso de odbc_rollback() y odbc_commit() tienes que configurar tu iSeries con el diario activo, en mi caso concreto no podía hacerlo, suponía una seria penalización al rendimiento de otras aplicaciones del iSeries, de ahí que surgiese la idea del bloqueo de un fichero.

Seguramente nuestro amigo no tiene tantas restricciones y puede hacer uso de técnicas menos enrevesadas.
__________________
Saludos
Emilio
Responder Con Cita
  #5  
Antiguo 06-05-2006
Avatar de Perberos
Perberos Perberos is offline
Miembro
 
Registrado: may 2006
Posts: 17
Poder: 0
Perberos Va por buen camino
Cita:
Empezado por leflaco
Buenas,
Estoy realizando un sistema web con php y mysql y me queda un tema por resolver: La concurrencia de varios usuarios a un registro. La verdad que no se como hacerlo si alguien me puede dar una mano estare muy agradecido.

Saludos
Hola, Por lo que entiendo.

1 - Queres saber el tiempo que estan conectado los usuarios.
2 - Queres saber quienes son los que se conectan.

Para la primera, te recomiendo utilizar javascript. (pero se puede hacer de otra manera. con solo php) digamos que cada 5 o 10 minutos, haces un HTTPResquest a un php para sumar el tiempo.

Para la segunda, podes utilizar un contador, y un time()
Me explico mejor:
En el row del usuario (fila) dentro de la base de datos, podes crear una columna que diga 'visit_count' del tipo integer.
Y otra que diga 'last_visit' del tipo integer o datatime (era asi? no recuerdo bien)

Bueno, no confundo mas

Última edición por Perberos fecha: 06-05-2006 a las 06:41:53.
Responder Con Cita
  #6  
Antiguo 06-05-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola, no estoy muy seguro de si esto tiene que ver con lo que se pregunta, ni si a leflaco realmente le importan las respuestas, pero me llama la atención esto

Cita:
Empezado por Perberos
Para la primera, te recomiendo utilizar javascript. (pero se puede hacer de otra manera. con solo php) digamos que cada 5 o 10 minutos, haces un HTTPResquest a un php para sumar el tiempo.
Me parece buena idea el uso de ajax. Ahora, mencionas que puede hacerse sólo con php. ¿cómo sería esto? De hecho, creo que nunca lo había pensado, ¿cómo hace un sistema como el de estos foros para medir el tiempo de actividad?

Y por cierto, ¡bienvenido a los foros!

// Saludos
Responder Con Cita
  #7  
Antiguo 06-05-2006
Avatar de Perberos
Perberos Perberos is offline
Miembro
 
Registrado: may 2006
Posts: 17
Poder: 0
Perberos Va por buen camino
Hola, gracias por la bienvenida, hace mucho que no visitaba este foro. lo veo mas bonito

a ver... improvisemos un sistema...

digamos que al ingresar el usuario a una funcion init();
que digamos que esté en el de reconocimiento del usuario. cookies.php, o common.php

Tenemos el valor, 'lastvisit' y digamos que usamos el tipo int(11) obtenido del time();

Bien ahí, convengamos que tambien asignaremos un rango de conexion. es decir, 10 min sin ingresar es inactividad.
entonces, comparamos.
Código PHP:
if ( $lastvisit 5*60*10 time() ) //Comprobamos el lapso de petision
{
  
$standtime time() - $lastvisit//añadimos los segundos de sesión
  
$lastvisit time(); //actualizamos última visita
}
// de esa forma se obtiene $standtime, con los segundos de peticiones
// entre cada pagina, con un rango de 5 minutos o 300 segundos.
// pero hay que tener cuidado de donde se coloca este codigo.
// sobre todo si no se actualiza el $lastvisit 
con eso se puede medir facilmente, el tiempo de petision de un usuario. pero (siempre hay un pero ;P)
hay que tener en cuenta que los usuarios que ingresan a la pagina, ... mas de uno se toma su tiempo para leer las cosas, e incluso re-leerlas.
por lo que hay que elegir bien el tiempo rango.

Código PHP:
@define('USER_RANGESESSION'5*60*10 time());
if ( 
$lastvisit USER_RANGESESSION )
{
  
$standtime time() - $lastvisit;
  
$lastvisit time();

saludos, y perdon por lo extenso :3
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
control de concurrencia ximenita MySQL 1 05-11-2005 21:48:47
Clientdataset y concurrencia Johnny Q Conexión con bases de datos 6 25-10-2005 20:35:49
Concurrencia mary123 C++ Builder 1 31-03-2005 19:58:13
Alta concurrencia SCORDOBA Firebird e Interbase 3 11-05-2004 16:53:42
problemas con concurrencia davidgaldo Conexión con bases de datos 4 21-02-2004 18:23:56


La franja horaria es GMT +2. Ahora son las 18:54:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi