PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → Concurrence d'accès - Blocage
Concurrence d'accès - Blocage
Débuté par Jef, 15 avr. 2003 12:59 - 2 réponses
Posté le 15 avril 2003 - 12:59
Avez-vous des solutions pour ce type de problème :

J'ai une page qui me permet de mettre à jour la fiche d'un client (nom,
prénom, etc.). A priori, je bloque l'enregistrement (HLitRechercheBloque)
pour me permettre de faire la modification et éviter que 2 internautes
réalisant une modification s'écrasent leurs modifs. Seulement, mon
utilisateur peut mettre un certain temps pour faire les modifs, bloquant
l'enregistrement plus que nécessaire. Par ailleurs, si l'internaute quitte
le site brutalement (sans sortir par une commande appropriée qui libérerait
l'enregistrement), je peux me retrouver avec un enregistrement bloqué le
temps que sa session soit fermée sur le serveur (enfin j'imagine car je n'ai
pas testé).

Dans la doc, les seules utilisations des blocages d'enregistrement ou de
fichiers se font dans un code séquentiel et homogène : le code bloque
l'enregistrement, fait les modifs et libère l'enregistrement dans la foulée
(tout ça ne dure forcément que quelques millisecondes, ce qui est fort
différent des minutes nécessaires à l'utilisateur pour mettre à jour une
fiche).

Jef.
Posté le 17 avril 2003 - 01:39
Je ne sais pas si cela peux répondre à ton problème car je n'utilise pas les
fichiers Hyperfile mais un serveur SQL. Enfin, par rapport à ce que je lis,
je suppose que tu dois avoir une table CLIENT dans laquelle tu demandes un
nom, un prénom, etc. et que tu attribues un numéro client. Pourquoi ne pas
créer une table NUMCLIENT avec un champ NUMERO_DISPO, cette table ne
comportera qu'un et un seul enregistremement comportant le numéro de client
disponible. C'est cette table que tu vas bloquer mais uniquement pour
relever un numéro de client, une fois le numero relevé, tu l'incrémentes et
tu la sauves. Bien sûr, tu libères également tout de suite cette table.
Ainsi, ton numéro client est unique, le client peux passer dix ans à remplir
son formulaire d'état civil, pour toi, ce n'est pas grave puisque tu ne
bloque plus la table CLIENT.

Bref, en résumé l'algo ressemble à ça :
Bloquer Table NUMERO CLIENT
Lire la valeur NUMERO_DISPO et la mémoriser en variable globale (contexte
utilisateur)
Remplacer NUMERO_DISPO par sa valeur +1
Débloquer Table NUMERO_CLIENT

Le tout est très rapide.

Tu as désormais ton Numero_CLIENT dans la session de l'utilisateur en
variable globale
C'est cette valeur que tu vas utiliser pour réaliser ton enregistrement de
la table CLIENT
Si le client se deconnecte, pas grave, il y aura juste des trous entre tous
tes numéros de client.

Bon courage
Grég.

"Jef" <jef@cadinfor.com> a écrit dans le message de news:
3e9bd7ab$1@news....
Avez-vous des solutions pour ce type de problème :

J'ai une page qui me permet de mettre à jour la fiche d'un client (nom,
prénom, etc.). A priori, je bloque l'enregistrement (HLitRechercheBloque)
pour me permettre de faire la modification et éviter que 2 internautes
réalisant une modification s'écrasent leurs modifs. Seulement, mon
utilisateur peut mettre un certain temps pour faire les modifs, bloquant
l'enregistrement plus que nécessaire. Par ailleurs, si l'internaute quitte
le site brutalement (sans sortir par une commande appropriée qui

libérerait
l'enregistrement), je peux me retrouver avec un enregistrement bloqué le
temps que sa session soit fermée sur le serveur (enfin j'imagine car je

n'ai
pas testé).

Dans la doc, les seules utilisations des blocages d'enregistrement ou de
fichiers se font dans un code séquentiel et homogène : le code bloque
l'enregistrement, fait les modifs et libère l'enregistrement dans la

foulée
(tout ça ne dure forcément que quelques millisecondes, ce qui est fort
différent des minutes nécessaires à l'utilisateur pour mettre à jour une
fiche).

Jef.


Posté le 18 avril 2003 - 15:56
Merci pour ta réponse. Cela répond partiellement. Je retient l'idée de créer
une autre table et de bloquer cette dernière, ce qui laisse mon entité
CLIENT dispo pour les autres.

Jef
--

"Grég" <gregory.brice@univ-lille1.fr> a écrit dans le message de news:
3e9dd8e6@news....
> Je ne sais pas si cela peux répondre à ton problème car je n'utilise pas
les
fichiers Hyperfile mais un serveur SQL. Enfin, par rapport à ce que je

lis,
je suppose que tu dois avoir une table CLIENT dans laquelle tu demandes un
nom, un prénom, etc. et que tu attribues un numéro client. Pourquoi ne pas
créer une table NUMCLIENT avec un champ NUMERO_DISPO, cette table ne
comportera qu'un et un seul enregistremement comportant le numéro de

client
disponible. C'est cette table que tu vas bloquer mais uniquement pour
relever un numéro de client, une fois le numero relevé, tu l'incrémentes

et
tu la sauves. Bien sûr, tu libères également tout de suite cette table.
Ainsi, ton numéro client est unique, le client peux passer dix ans à

remplir
son formulaire d'état civil, pour toi, ce n'est pas grave puisque tu ne
bloque plus la table CLIENT.

Bref, en résumé l'algo ressemble à ça :
Bloquer Table NUMERO CLIENT
Lire la valeur NUMERO_DISPO et la mémoriser en variable globale (contexte
utilisateur)
Remplacer NUMERO_DISPO par sa valeur +1
Débloquer Table NUMERO_CLIENT

Le tout est très rapide.

Tu as désormais ton Numero_CLIENT dans la session de l'utilisateur en
variable globale
C'est cette valeur que tu vas utiliser pour réaliser ton enregistrement de
la table CLIENT
Si le client se deconnecte, pas grave, il y aura juste des trous entre

tous
tes numéros de client.

Bon courage
Grég.

"Jef" <jef@cadinfor.com> a écrit dans le message de news:
3e9bd7ab$1@news....
Avez-vous des solutions pour ce type de problème :

J'ai une page qui me permet de mettre à jour la fiche d'un client (nom,
prénom, etc.). A priori, je bloque l'enregistrement

(HLitRechercheBloque)
pour me permettre de faire la modification et éviter que 2 internautes
réalisant une modification s'écrasent leurs modifs. Seulement, mon
utilisateur peut mettre un certain temps pour faire les modifs, bloquant
l'enregistrement plus que nécessaire. Par ailleurs, si l'internaute

quitte
le site brutalement (sans sortir par une commande appropriée qui
libérerait

l'enregistrement), je peux me retrouver avec un enregistrement bloqué le
temps que sa session soit fermée sur le serveur (enfin j'imagine car je
n'ai

pas testé).

Dans la doc, les seules utilisations des blocages d'enregistrement ou de
fichiers se font dans un code séquentiel et homogène : le code bloque
l'enregistrement, fait les modifs et libère l'enregistrement dans la
foulée

(tout ça ne dure forcément que quelques millisecondes, ce qui est fort
différent des minutes nécessaires à l'utilisateur pour mettre à jour une
fiche).

Jef.