Foros del Web » Programando para Internet » PHP »

reto (nadie me ha dado respuesta)

Estas en el tema de reto (nadie me ha dado respuesta) en el foro de PHP en Foros del Web. Hola, les propongo una pregunta que nadie ha sido capaz de responderme hasta hoy ni yo mismo que llevo tiempo dando le vueltas he podido ...
  #1 (permalink)  
Antiguo 16/04/2007, 17:18
 
Fecha de Ingreso: diciembre-2003
Mensajes: 44
Antigüedad: 20 años, 4 meses
Puntos: 0
reto (nadie me ha dado respuesta)

Hola, les propongo una pregunta que nadie ha sido capaz de responderme hasta hoy ni yo mismo que llevo tiempo dando le vueltas he podido dar con la respuesta, pero imagino que se puede hacer.

Les comento.

Estoy preparando una tienda virtual para vender numeros de lotería, el problema de vender este tipo de articulos es que son limitados y más vale no vender de más ya que imaginense el caos si llegara a tocar.

La tienda no es problema, mi problema es el siguiente les pondre un ejemplo con 2 usuarios para que se entienda mejor.

El usuario1 compra 5 numeros del numero 00.001 del que solo hay 5 existencias.
El usaurio2 hace la misma compra antes de que el numero 1 haya validado su compra.

El problema lo tengo en que si los dos usuario validan la compra al mismo tiempo, les dice que es correcta.

Hay alguna manera de evitar este problema?

Tanto me da que la solucion sea en PHP como en ASP (por eso cuelgo este tema tambien en ASP)

Gracias.
  #2 (permalink)  
Antiguo 16/04/2007, 17:38
Avatar de webdesignsite  
Fecha de Ingreso: enero-2007
Mensajes: 155
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: reto (nadie me ha dado respuesta)

Seria mejor si proprocionas codigo para ayudarte!

salu2
__________________
WebDesignSite
Diseño Web - Altas Buscadores Gratis - Intercambio de Banners - Foros de soporte
http://webdesignsite.bolhost.com/
  #3 (permalink)  
Antiguo 16/04/2007, 17:48
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Re: reto (nadie me ha dado respuesta)

para ello las bases debes trabajar con una base de datos robusta como oracle que trabaja con procedures :P asi se escribia creo o sea procedimientos almacenados y ademas con semaforos nunca tendras esos problemas ahora si lo que quieres es controlarlos tu con php vas a tener que hacer un sistema de semaforos que el que toma un numero el otro queda en espera ;) o sea si yo cojo el numero 00.00.1 o como sea nadie mas pueda poner esos numeros este o no ingresados a la base de datos aun :) me captas...
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #4 (permalink)  
Antiguo 16/04/2007, 18:09
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Re: reto (nadie me ha dado respuesta)

no creo que haya problema, ya que primero debes de verificar cuantos números quedan disponibles antes de hacer el update y asi validas mejor; es decir, dos consultas(querys) no se pueden ejecutar al mismo tiempo, primero se procesa una y luego la otra, bien cuando la primera termine de hacer sus cambios se recibe la segunda y ahi se consulta para saber si hay números disponibles o no y si los hay se aplica el update.

saludos
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #5 (permalink)  
Antiguo 16/04/2007, 20:49
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: reto (nadie me ha dado respuesta)

Hola, pues yo lo que haria es que apenas alguno de los 2 usuarios haga la compra efectiva, guarde los datos en una tabla compras por ejemplo, y que cada vez que se realize una compra vaya y mire los datos de esa tabla y verifique que de lo que esten comprando aún haya existencias, y si es asi que le deje comprar, de lo contrario no. E igualmente,puede pasar que el usuario1 solo compre 2 existencias, entonces quedarian 3 libres en caso de ser cinco, eso quiere decir que cada vez que alguien hace compras se deben actualizar las existencias disponibles, espero te sirva
__________________
Suerte.
_______________________________
"La vida es el principio de la muerte".
  #6 (permalink)  
Antiguo 17/04/2007, 01:53
 
Fecha de Ingreso: agosto-2004
Mensajes: 118
Antigüedad: 19 años, 8 meses
Puntos: 1
Re: reto (nadie me ha dado respuesta)

Lo que tu estas intentando hacer se llama transacciones.

Una transacción es el sistema por el que se rigen los bancos, por ejemplo.

Este es el mismo caso que cuando tu pides dinero en un cajero y en el momento de salir este fisicamente por el expendedor, se queda sin corriente electrica, que habrá pasado? ¿Me han descontado el dinero solicitado de mi cuenta pero yo no lo he recibido?.

Al grano, una transacción se valida por las parte que intervienen en la operación.

Lo que comentas de tu tienda, si tienes dos usuarios solicitando el mismo número, en el momento de validar la transacción, debes comprovar la cantidad de números disponibles, si hay números disponibles, la transacción es valida y en caso contrario falla y no se valida la operación.

El idioma que utilices es indiferente, ya sea php o asp, ya que las transacciones las provee el servidor de base de datos. Han comentado que uses un oracle, muy buena opción si no fuera por el precio de las licencias. Yo te recomendaría algo como interbase de borland o Firebird (Que proviene de interbase), si la idea es utilizar un hosting de pago, busca uno que use MySql 5.x o superior.

Te puedo decir que este, www.amen.es, funciona muy bien, buenos precios y cumple ampliamente con lo que necesitas, ademas están en barcelona.
  #7 (permalink)  
Antiguo 17/04/2007, 06:14
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
Re: reto (nadie me ha dado respuesta)

http://www.sindominio.net/ayuda/preg...eligentes.html
__________________
Gracias de todas todas
-----
Linux!
  #8 (permalink)  
Antiguo 17/04/2007, 13:59
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: reto (nadie me ha dado respuesta)

¿¿¿???


RSAPRILIA, lo que preguntas es lo que debes aplicar a un ecomerce con stock, o a ventas de remates o lugares donde el producto puedo no estar más por ser vendido.

La idea es estar permanentemente en todos pasos (carro, confirm, datos de envío, etc) si el/los productos tiene stock o están disponibles.
El único lugar donde se baja el producto de la db es en el momento en que la pasarela es aprobada.
De esta manera, en cualquier momento anterior al final de la compra te pueden decir "el producto fue vendido", o algo por el estilo. Tal cual pasa en Mercado libre por ejemplo para darte una idea mas clara.

Espero se comprenda la idea.

PD: Esto lo define el cliente, la otra es marcar como "reservado" un número por X minutos, dejando de esta manera la posibilidad de cancelar la compra con seguridad.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #9 (permalink)  
Antiguo 25/08/2007, 21:06
Avatar de MSDark  
Fecha de Ingreso: noviembre-2002
Ubicación: Talca VII región
Mensajes: 337
Antigüedad: 21 años, 5 meses
Puntos: 1
Re: reto (nadie me ha dado respuesta)

Esto me parece a mi manejo de recursos, espera activa, manejo de bloques y semaforos, como lo hacen los sistemas operativos cuando algun procesos desea usar un recurso, que es el mismo caso que tienes.

Lo que deberías hacer es que cuando un usuario toma un ticket, el "proceso" entre en su región critica bloqueando el acceso de cualquier otro usuario hacie ese ticket. esto lo puedes hacer, como ya te comentaron usando alguna base dedatos como oracle e implementar esto con algun procedimiento y usando semáforos, o puedes hacerlo con php + mysql, guardando los datos de los tickets que tienes disponibles ese día en alguna tabla, y al momento de que alguien elija un ticket, cambiar algún campo del registro usando com semáforo para que nadie más pueda acceder a él, hasta que el "proceso" haya terminado y salido de su región crítica...

Saludos
__________________
DelirioLinux.. Software Libre y tecnología.. php también..
Saludos :arriba:
Usuario Linux #198486 y Ubuntu #12791
Gutsy Gibbon
  #10 (permalink)  
Antiguo 25/08/2007, 21:55
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Re: reto (nadie me ha dado respuesta)

Cita:
Iniciado por rayder Ver Mensaje
Te puedo decir que este, www.amen.es, funciona muy bien, buenos precios y cumple ampliamente con lo que necesitas, ademas están en barcelona.
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 22:42.