IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Conception Web Discussion :

Empècher deux utilisateurs de passer en même temps en mode de modification


Sujet :

Conception Web

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Pgs
    Pgs est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Par défaut Empècher deux utilisateurs de passer en même temps en mode de modification
    Bonjour,
    Je ne sais pas si j'ai choisi le bon forum. Je suis désolé si ce n'est pas le cas.
    Je développe un site Web Apache/Php/MySQL.
    Sur une des pages, les utilisateurs rédigent/modifient des notes qui peuvent être assez longues.
    Je voudrais que si un utilisateur travaille sur une note, un autre utilisateur ne puisse pas aller en parallèle sur cette note en mode modification.
    J'ai pensé à la chose suivante ;
    * ajouter un champ à la table afin de pouvoir indiquer qu'une note est en cours de modification,
    * lorsqu'un utilisateur clique sur le bouton de modification d'une note, le script accepte de passer en mode modification si ce champ est est à 0. Il place alors ce champ à 1.
    * lorsque l'utilisateur valide sa modification, le script replace le champ à 0.

    Le problème est de gérer le cas où l'utilisateur ferme son explorateur sans valider sa modification : le champ reste à 1 et personne ne peut plus modifier.

    Pouvez-vous me conseiller afin que je puisse traiter ce point proprement ?
    Merci d'avance
    Philippe

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Passer par les transactions pour éviter la gestion "manuelle"(périlleuse) des blocages/déblocages ?
    => https://mysql.developpez.com/faq/?page=Transactions

  3. #3
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Salut,

    la meilleure des solutions est d'utiliser les websockets qui permettent un dialogue en temps réel entre le serveur et le client : tant que le socket est ouvert par un des clients, un autre socket ne peut être ouvert par un autre client et cela règle ton problème puisque le socket est clos même si la page est fermée sans sommation.

    L'autre manière de faire plus en temps réel et légèrement moins fiable mais qui ne change pas de techno est d'enregistrer non pas un booléen mais une date de dernière modification, etu tu peux ainsi appliquer une règle comme quoi si la dernière date depuis plus de X minutes, tu considères que l'utilisateur n'est plus en train d'éditer le document.

  4. #4
    Pgs
    Pgs est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Par défaut
    Merci pour vos réponses.
    Je vais creuser cela.
    Juste une question.
    Le serveur web peut-il "envoyer" spontanément un message ou une instruction au client web ?
    Merci
    Philippe
    Message au Mosellan : je connais bien de pays de Bitche. Es-tu de par là ?

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Le serveur web peut-il "envoyer" spontanément un message ou une instruction au client web ?
    Oui en utilisant les websockets comme dis ci dessus, le dialogue se fait dans les 2 sens et non plus uniquement du client vers le serveur.

  6. #6
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Citation Envoyé par Pgs Voir le message
    Message au Mosellan : je connais bien de pays de Bitche. Es-tu de par là ?
    Je suis du coté Metz

  7. #7
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Salut,

    Tu peux faire une solution ajax pour éviter d'utiliser les websoket, à moins que de très nombreux utilisateurs rédigent en même temps. Par exemple toutes les quinze secondes tu envoies une requête ajax qui va actualiser un champ datetime du sujet en cours d'édition. Ce même champ sera aussi mis à jour lors de la validation du sujet.

    Un autre utilisateur pourra se connecter uniquement si la valeur de ce champ n'a pas été mis à jour depuis plus de trente seconde par exemple. Pour la connexion tu peux aussi faire des requêtes ajax toutes les quinze secondes pour scruter quand le champ n'a pas été mis à jour depuis plus de 30s et informer le visiteur quand la connexion devient libre lors du retour ajax.

    Cela fait un petit travail mais bien plus léger que d'installer les websoket surtout juste pour cela. La limitation de ce système est le nombre d'utilisateurs simultanés puisque les requêtes ajax récurrentes vont finir par consommer pas mal de ressources si beaucoup d'utilisateurs simultanés veulent mettre les notes à jour. Dans ce cas les websoket pourraient assurer une montée en charge bien plus importante.

Discussions similaires

  1. [AC-2007] ouvrir deux bases de données en même temps [Résolu]
    Par safa-ini dans le forum Access
    Réponses: 6
    Dernier message: 03/03/2014, 11h35
  2. Réponses: 3
    Dernier message: 01/10/2010, 10h57
  3. JSlider de deux fenêtres diff. évoluent en même temps
    Par alex2746 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 24/01/2010, 22h43
  4. Réponses: 13
    Dernier message: 10/12/2005, 13h34
  5. [MySQL] Se connecter à deux base de données en même temps ??
    Par leo13 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 20/01/2005, 10h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo