|
Concurrence d'accès - Blocage |
Iniciado por jef, abr., 15 2003 12:59 PM - 2 respostas |
| |
| | | |
|
| |
Publicado em abril, 15 2003 - 12:59 PM |
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. |
| |
| |
| | | |
|
| | |
| |
Publicado em abril, 17 2003 - 1:39 AM |
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.
|
| |
| |
| | | |
|
| | |
| |
Publicado em abril, 18 2003 - 3:56 PM |
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.
|
| |
| |
| | | |
|
| | | | |
| | |
|