Aktualnie buduję witrynę e-commerce z PHP/MySQL. Ostatnio pracowałem nad integracją koszyka. Klient chciał zapewnić dostępność zapasów dla potencjalnych nabywców, dlatego stworzyłem system zarządzania zapasami. Koszyk działa w następujący sposób:Koszyk na zakupy i zarządzanie zapasami
- Klient dodaje pewną ilość przedmiotu do swojego koszyka.
- Ilość sztuk jest zarezerwowana od dostępne zapasy w bazie danych.
- Nikt inny nie może kupić zapasów zarezerwowanych .
- Magazyn pozostaje zarezerwowany do momentu, aż klient zamówi zlecenie - gdzie zapas jest następnie usunięty z bazy danych .
- Jeśli klient porzuci swój koszyk, zapasy pozostają zarezerwowane.
- Jeśli inny klient chce kupić przedmiot, ale tylko dostępny zapas jest zarezerwowany przez innego klienta, klient może wykraść zapas zarezerwowany, jeśli był nieaktywny przez 20 minut.
Moje pytanie brzmi, jakie są najlepsze praktyki dla tego rodzaju scenariusza? Czy robię to poprawnie? Najważniejsze jest to, że klient nie chce sprzedawać towaru, którego nie ma.
Szukam dyskusji na temat ulepszenia funkcjonalności lub tego, co robią inni, aby to osiągnąć.
Dzięki za poradę. Zamierzam przerobić funkcjonalność. Wiedziałem, że to nie jest najlepszy sposób, aby to zrobić. Zamrażanie akcji prawdopodobnie nie jest dobrym pomysłem, chyba że sprzedajesz wyjątkowe produkty, takie jak bilety na koncerty. – jgallant
Tak, podobnie jak w przypadku kontroli kodu źródłowego i transakcji bazy danych, domyślne jest ustawienie optymistyczne, chyba że masz uzasadnione powody, aby postąpić inaczej. – Jerph