Actualmente estoy construyendo un sitio de comercio electrónico con PHP/MySQL. Recientemente, he estado trabajando en la integración del carrito de compras. El cliente quería asegurarse de que las existencias estuvieran disponibles para los compradores potenciales, por lo que creé un sistema de gestión de existencias. El carrito de compra funciona de la siguiente manera:Gestión de carro de compra y stock
- El cliente agrega una cantidad de un artículo a su carro.
- Cantidad del artículo se reserva de disponible en la base de datos.
- Nadie más puede comprar acciones reservadas.
- El stock permanece reservado hasta que el cliente procesa el pedido, donde el stock es entonces eliminado de la base de datos.
- Si el cliente abandona su carrito, el stock queda reservado.
- Si otro cliente desea comprar un artículo, pero solo el material disponible está reservado por otro cliente, entonces el cliente puede robar el stock reservado si ha estado inactivo durante 20 minutos.
Mi pregunta es, ¿cuáles son las mejores prácticas para este tipo de escenario? ¿Estoy haciendo esto correctamente? Lo principal es que el cliente no quiere vender acciones que no tiene.
Estoy buscando tener una discusión sobre cómo mejorar la funcionalidad, o lo que otros están haciendo para lograr esto.
Gracias por el asesoramiento. Voy a volver a trabajar la funcionalidad. Sabía que no era la mejor manera de hacer esto. La congelación de valores probablemente no sea una buena idea, a menos que venda productos únicos, como boletos de conciertos. – jgallant
Sí, al igual que con el control de fuente y las transacciones de base de datos, el bloqueo predeterminado es optimista a menos que tenga una buena razón para hacer lo contrario. – Jerph