Quelle est la meilleure pratique pour gérer le cas où deux clients ajoutent en même temps un produit dont le stock n'était que 1?
Doit qu'il y ait un chèque dans le code du panier pour éviter que l'un de ces 2 clients ajoutent le même produit?
Ou ce chèque doit-il être effectué dans la phase de paiement, par exemple une seconde requête pour confirmer que le produit concerné est toujours présent en stock (moyen non acheté par le client simultané)?
Il n'y a pas de réponse parfaite pour cette question et tout dépend des détails.
En tant que première "ligne de défense", j'essaierais d'éviter de telles situations, en ne vendant tout simplement pas d'articles bas que possible. Si cela est possible peut dépendre de la situation et du type d'articles que vous souhaitez vendre. Dans la société que je travaille, les articles sont principalement supprimés du site Web avant de ne pas manquer de stock. Mais nous vendons une vente entière et les quelques articles restants sont vendus par nos vendeurs comme offres spéciales. Cela peut ne pas être une option pour les petits magasins, en particulier lors de la vente d'articles à prix élevé.
La solution pour faire la double vérification lors de l'ajout de quelque chose au panier n'est pas très bon. Les gens mettent beaucoup dans des paniers sans jamais passer une commande. Cela peut donc bloquer cet article pendant une certaine période.
Donc, à mon humble avis pour de petits travaux, le meilleur moyen est de faire une vérification finale juste avant le paiement, lorsque la commande est réellement placée. Dans le pire des cas, vous devez vous dire auprès du client que vous êtes à court de stock (ce que les petits magasins ne se produiront pas souvent).
Je pense que la meilleure pratique est de choisir laquelle des options ci-dessous est plus appropriée pour un cas de rentabilité particulier :
... résout ce problème ( Problème de conflit de session ) en validant que les changements sur le point d'être commis par une session ne sont pas en conflit avec les changements de une autre session. Une validation de pré-validation réussie est, dans un sens, l'obtention d'un verrou indiquant qu'il est correct d'aller de l'avant avec les modifications apportées aux données d'enregistrement. Tant que la validation et les mises à jour se produisent dans une transaction système unique, la transaction commerciale affiche la cohérence ...
Comme toujours, cela dépend de vos besoins. Si vous êtes Amazon et que vous vendez 100 000 000 articles par jour, les frais généraux pour la vérification et le verrouillage préventif sont probablement prohibitifs et le problème d'un client par jour ne reçoit pas leur article après tout est négligeable. Vous traitez de rares icônes religieuses antiques uniques et coûteuses, l'inverse s'applique probablement probablement. Vous devez vous-même savoir où se trouve votre analyse de rentabilisation sur ce spectre.
La meilleure pratique, pour l'utilisateur, est évidemment assurer que le deuxième ajout échoue. Mais cela va ralentir votre site entier pour le bien du cas de 0,1%.
La solution la plus efficace techniquement, et celle de maximiser les ventes, est de lui permettre de réussir et d'essayer de remplir les deux commandes plus tard - juste parce que vous n'avez pas de stock en ce moment, ne signifie pas que vous ne pouvez pas le trouver dans une urgence. Si vous ne pouvez pas alors que quelqu'un doit contacter l'utilisateur qui a affiché et s'excuser. mais c'est exactement ce qui a conduit à uproar avant Noël cette année (Ce n'est pas le seul article qui est apparu, alors excuses de mieux acheter, mais c'était le premier que j'ai trouvé).
Votre travail est de présenter Tous Les options de l'entreprise, avec des pros et des inconvénients et laissez-les décider de vos conseils. S'ils peuvent se permettre un petit coup occasionnel à la réputation d'optimiser les ventes, alors assez juste; S'ils ne le peuvent pas et que la circulation est si faible que vous pouvez vérifier rapidement les mises à jour, alors c'est aussi leur appel.