Deux clients, une seule place

Deux clients réservent la dernière place au même instant. Chacun reçoit une confirmation. Un seul a une place, et c'est votre accueil qui l'apprend au second. Cette page vous laisse provoquer la panne vous-même, sur trois façons d'écrire le même code.

Provoquez la panne

Un créneau d'atelier avec trois postes de pose, et six clients qui valident au même instant. Choisissez une façon d'écrire le code, puis lisez ce que le serveur a réellement fait. Chaque visiteur reçoit son propre bac à sable, effacé au bout de trois heures, donc rien de ce que vous faites ici ne sort de votre écran.

Comment le code est écrit
  • Les boutons agissent ici

    Mardi 14h00

    Trois postes de pose disponibles sur ce créneau.

    3 / 3

    Places libres

  • Mercredi 9h00

    Deux postes de pose disponibles sur ce créneau.

    2 / 2

    Places libres

  • Mercredi 16h00

    Un seul poste, le créneau part entier.

    1 / 1

    Place libre

Le faire à la main, dans deux onglets

Ouvrez cette page dans deux onglets, choisissez la même méthode dans les deux, et cliquez sur « Un seul client » au même instant. Deux clics humains ratent souvent la fenêtre, qui se compte en millisecondes. C'est pour ça que le bouton principal en lance six d'un coup, sans le moindre délai entre elles. Si la course ne se produit pas, le rapport le dit au lieu de la fabriquer.

Le rapport s'affichera ici. Il dit ce que chaque client a obtenu, et combien de places l'atelier tient réellement.

Ce qui se passe entre la lecture et l'écriture

Réserver une place demande de lire le nombre de places restantes, de le diminuer de un, puis de réécrire le résultat. Tant qu'un seul visiteur est là, ces gestes se suivent sans incident. À deux visiteurs simultanés, le second lit la valeur avant que le premier n'ait écrit la sienne. Il écrase alors une réservation qu'il n'a jamais vue.

Aucune erreur ne s'affiche nulle part. Les deux clients reçoivent une confirmation, le compteur affiche un nombre cohérent, et le journal du serveur reste vide. Le défaut attend le jour de la pose pour se manifester.

La rareté porte ici sur un créneau de pose, pas sur un article de catalogue. Un tee-shirt en quatre tailles et trois coloris se gère très bien avec une référence et un stock par déclinaison, nous l'avons écrit dans vendre du produit sur mesure en ligne. Ce qui casse, c'est la ressource unique disputée au même instant, la dernière place d'une session ou le créneau d'un technicien.

Pourquoi fermer la porte à clé ne suffit pas ici

La deuxième méthode est celle du manuel. Elle pose un verrou pendant l'opération, exactement comme le recommande la documentation. Sur un serveur ordinaire elle fonctionne, le second client attend son tour et le compte est juste. C'est ce qu'écrit un développeur à qui on signale le problème.

Sur un hébergement mutualisé, non. Les fichiers y vivent sur un disque partagé par le réseau, où deux programmes peuvent obtenir la même clé en même temps. Nous l'avons mesuré le 25 juillet 2026 depuis un fichier de ce site. Le code paraît correct et la documentation lui donne raison. Il perd quand même des réservations, sans qu'aucun journal ne le signale. Choisissez la méthode du manuel plus haut et comptez les confirmations.

La troisième méthode ne répare pas le verrou, elle supprime le besoin d'en avoir un. Chaque place devient un jeton portant son propre nom, et réserver revient à prendre ce jeton. Deux clients qui visent le même, un seul l'obtient, parce que le système d'exploitation garantit qu'un nom ne peut être créé qu'une fois. Plus de lecture suivie d'une écriture, donc plus rien à protéger.

Le compteur n'est pas le seul à mentir

Une place réservée se voit tout de suite, parce que ça se termine par un client mécontent à l'accueil. Trois autres règles de la même commande d'atelier se trompent plus discrètement, et se découvrent à la comptabilité. Elles suivent, dans l'ordre où elles coûtent cher.

Le panier, à manipuler

Les deux règles qui suivent se lisent mal sur un exemple figé. Changez une quantité et regardez les tableaux se recalculer. Le seuil bascule, l'écart d'un centime apparaît ou disparaît. On voit alors qu'aucune des lectures n'est plus fausse que les autres.

Commande d'atelier
  • 69,90 euros par heure heure Facturée par demi-heure. Zéro pour la retirer du panier.
  • 87,45 euros par pneu pneu Valve neuve et équilibrage compris. Zéro pour la retirer du panier.
  • 49,90 euros par forfait forfait Forfait, train avant. Zéro pour la retirer du panier.
  • 118,60 euros par jeu jeu Pièces seules, pose en main-d'oeuvre. Zéro pour la retirer du panier.

Les deux tableaux se recalculent à chaque changement de quantité. Aller au premier.

Règle 1 sur 3

L'ordre des opérations sur un seuil

La règle commerciale tient en une phrase : reprise et livraison du véhicule offertes à partir de 300,00 euros. Personne n'a précisé si le seuil se compare au total avant ou après la remise, ni en hors taxes ou en toutes taxes comprises. Celui qui écrit la règle ne voit pas qu'il y a quatre montants, donc il ne précise rien.

Le même panier, lu de quatre façons. Montants calculés par le serveur à chaque changement de quantité.
Base de comparaison Unité Montant comparé Franchise Total TTC
Total avant remise Hors taxes 329,65 Acquise 356,01
Total avant remise Toutes taxes 395,58 Acquise 356,01
Total après remise Hors taxes 296,68 Non acquise, frais facturés 410,01
Total après remise Toutes taxes 356,01 Acquise 356,01

Quatre lectures, deux montants possibles, et 54,00 euros d'écart sur la même commande. La franchise étant tout ou rien, quatre bases de comparaison ne donnent pas quatre totaux, elles donnent trois avis contre un. Aucune des quatre n'est fausse. Tant que la règle écrite ne dit pas laquelle s'applique, c'est le logiciel qui tranche, et le jour où un client compare sa facture à celle de son voisin, personne ne sait dire pourquoi elles diffèrent.

Règle 2 sur 3

L'arrondi de la TVA

La TVA s'arrondit au centime, mais sur quoi ? Ligne par ligne, puis on additionne, ou bien on additionne d'abord et on arrondit une seule fois. Ces deux méthodes existent dans de vrais logiciels de facturation, et elles ne donnent pas toujours le même montant.

Taux normal sur toutes les lignes de la commande.
Méthode d'arrondi TVA Total TTC
Arrondi sur chaque ligne, puis somme 68,33 410,01
Somme des lignes, puis arrondi une fois 68,34 410,02

Les deux méthodes s'écartent d'un centime sur cette commande. Un centime ne fâche personne le jour même. Multiplié par le nombre de commandes d'une année et confronté à un journal comptable, il occupe une demi-journée à chercher d'où il vient.

Règle 3 sur 3

L'expiration d'une réservation non payée

Une place bloquée et jamais payée doit revenir au stock, sinon un panier abandonné retire une place à tout le monde, indéfiniment. Le délai est de quinze minutes en production, ramené à une minute dans ce démonstrateur pour que le retour de la place se voie pendant votre visite. Réservez une place et regardez le compte à rebours.

Démonstrateur interactif. Atelier fictif, prestations et prix fictifs.

Ce que ça change sur un vrai projet

Aucune de ces trois règles ne relève du web. Elles viennent du métier. L'atelier sait combien de postes il a, le gérant sait à partir de quel montant il offre la reprise, le comptable sait comment il arrondit. Le travail du développeur commence après : transcrire ces règles sans les trahir, puis vérifier qu'elles tiennent quand deux personnes cliquent au même instant.

C'est aussi pour cette raison que nous mesurons le comportement de l'hébergement au lieu de nous fier à la documentation. Un verrou qui ne verrouille pas n'apparaît dans aucun journal d'erreur. Il se voit en lançant six requêtes et en comptant. La même exigence traverse nos autres démonstrateurs, de l'analyseur de données structurées à l'optimiseur de tournée, et notre approche du développement sur mesure détaille la méthode.

Une plateforme de réservation, un planning d'interventions. Si votre métier a des ressources uniques et des clients simultanés, le problème est déjà dans votre code. Il attend deux demandes tombées dans la même milliseconde, ce qui devient d'autant plus fréquent que le trafic monte.

Un planning que deux personnes remplissent en même temps

Décrivez-nous ce que vos clients réservent et ce qui arrive quand deux d'entre eux visent la même chose. Nous regardons ensemble ce qui doit être garanti et ce que ça coûte vraiment.

Décrire mon projet