Page 1 sur 1

Limiter l'accès à une base mysql

Posté : 07 mars 2012, 14:13
par top16500
Bonjour,

J'ai développé un site web ainsi qu'une interface d'administration des pages de contenus ... Jusque là aucun soucis ... Je souhaiterais qu'un administrateur se connectant à l'administration du site ne puisse pas accéder aux pages/articles qui sont en cours d'utilisation par un autre administrateur et là je séche ... Je précise que les pages/articles sont stockés dans une base Mysql, chacune identifiée par un ID unique ...

Votre aide me serait précieuse ...

Merci d'avance et bonne journée à tous(tes)

Re: Limiter l'accès à une base mysql

Posté : 07 mars 2012, 14:25
par sirakawa
Il me semble que :
http://dev.mysql.com/doc/refman/5.0/fr/lock-tables.html
répond à la question. Je m'en sers avec succès dans certains scripts.

Re: Limiter l'accès à une base mysql

Posté : 07 mars 2012, 14:37
par top16500
Merci pour cette réponse rapide ... Je viens de regarder et ça répond en partie à mon soucis ... En effet, je ne souhaite bloquer que les enregistrements déjà utilisés et non la table complète car d'autres enregistrements sont "exploitables" ...

Re: Limiter l'accès à une base mysql

Posté : 07 mars 2012, 14:48
par xTG
Euh non lock table n'est pas à utiliser dans un pareil cas, c'est pour gérer les accès concurrentiel en fait...
C'est à utiliser sur un thread, donc pas dans le cadre d'une multiple requêtage client-serveur, sinon on risque de bloquer la table indéfiniment...

Il n'existe pas à ce que je sache un système de verrou par enregistrement.
Mais tu peux en faire un perso, il suffit de rajouter une table (ou un champ) indiquant si l'enregistrement est en cours d'utilisation.
Et un autre avec un timeout surtout pour éviter les blocages permanent.

Re: Limiter l'accès à une base mysql

Posté : 07 mars 2012, 16:54
par top16500
Merci pour cette réponse ... Je vais donc gérer ça avec un champ logique "libre/occupé" et me pencher sur le risque que le champ logique reste bloqué à "occupé" et que de ce fait l'enregistrement soit définitivement vérrouillé ...

Merci à vous,

Bonne soirée

Re: Limiter l'accès à une base mysql

Posté : 07 mars 2012, 17:12
par Mazarini
Tu peux mettre une date pour indiqué le "occupé" et ainsi ne plus en tenir compte après un certain délai ou passer un traitement de libération de temps en temps.

Re: Limiter l'accès à une base mysql

Posté : 08 mars 2012, 11:23
par sirakawa
Euh non lock table n'est pas à utiliser dans un pareil cas, c'est pour gérer les accès concurrentiel en fait...
C'est à utiliser sur un thread, donc pas dans le cadre d'une multiple requêtage client-serveur, sinon on risque de bloquer la table indéfiniment...
Si
"Je souhaiterais qu'un administrateur se connectant à l'administration du site ne puisse pas accéder aux pages/articles qui sont en cours d'utilisation par un autre administrateur et là je séche .." n'est pas un problème d'accès concurrent (et pas concurrentiel, au passage,...
Si un thread obtient un verrouillage READ sur une table, ce thread (et tous les autres threads) peuvent uniquement accéder a cette table en lecture. Si un thread obtient un verrouillage WRITE sur une table, alors seul le thread qui a posé le verrou peut lire ou écrire sur cette table. Tous les autres threads sont bloqués.
Bien sûr il serait mieux de bloquer un seul enregistrement, et ça existe ailleurs que chez Mysql
mais il existe aussi:
http://dev.mysql.com/doc/refman/5.0/fr/ ... reads.html

Re: Limiter l'accès à une base mysql

Posté : 08 mars 2012, 12:26
par xTG
Au temps pour moi je n'avais jamais eu connaissance des attributs qu'on pouvait rajouter pour cibler le type de lock.