2012-05-31 5 views
0

je besoin d'aide pour verrouiller plus d'une demande webComment bloquer la demande Web multiples en utilisant PHP

Je développe un système de facturation où je donne l'option pour sauver configurations.so commune à la fois une seule utilisation peut sauver sa propre configuration.

maintenant mon problème est de savoir si plus d'un utilisateur clique sur le bouton d'envoi de configuration un seul utilisateur peut soumettre la configuration autre devra attendre complète le premier

Comment puis-je faire en PHP?

Merci à l'avance

+0

Vous m'avez totalement perdu. Voulez-vous que chaque utilisateur dispose d'une configuration? Si c'est le cas, MySQL est assez doué pour gérer les lignes de verrouillage nécessaires pour exécuter une seule requête INSERT/UPDATE. Si vous avez plusieurs requêtes, utilisez des transactions. Si vous essayez de créer une sorte de configuration singleton où plusieurs utilisateurs peuvent modifier une seule configuration, faites-le nous savoir, car il s'agirait d'un problème distinct. –

+0

1. LOCK TABLES nom_table ECRIRE 2. exécuter requête 3. TÉLÉCHARGER TABLES – s3polz

+0

Verrouiller les tables pour les utilisateurs Web n'est pas une très bonne idée. Vous ne savez jamais quand un utilisateur va simplement fermer son navigateur et repartir sans enregistrer. – nunespascal

Répondre

0

Si chaque utilisation peut avoir leur ensemble de configurations communes, pourquoi restreindre les utilisateurs des autres? Maintenant, je comprends qu'il y aura des situations où vous devez donner un seul accès d'utilisation (en modifiant une configuration partagée).

Tout type de verrouillage sur la bande doit être très prudent. Je vous suggère de garder une entrée dans une table dans votre base de données que l'utilisateur A est en train de modifier la configuration à l'heure actuelle (Obtenir un verrou).

Lorsque l'utilisateur B essaie d'ouvrir une configuration pour la modifier, vérifiez que A a tenté de la verrouiller. Si le verrou était avant une période de temporisation (disons 10 minutes), accordez le verrou à A. Cela vous assurera que vous ne verrouillez pas définitivement une ressource. Si l'utilisation A contient toujours un verrou valide, informez l'utilisateur B en conséquence. Les Javascripts peuvent avertir l'utilisateur A que son verrou expire et le renouveler si nécessaire.

+0

ici est la situation d'origine.J'ai la possibilité aux utilisateurs d'enregistrer leurs changements automatiquement toutes les 5 minutes. Maintenant, je donne également aux utilisateurs un bouton permet de valider le bouton.Une fois un utilisateur clique sur le bouton de validation pour commettre tous ses changements pendant que l'autre utilisateur ne peut pas soumettre une demande de validation en cliquant sur le bouton valider. alors comment puis-je implémenter cette situation afin qu'un seul utilisateur à la fois puisse valider les changements. – Sandip

+0

En gardant une table de serrures, comme je l'ai expliqué dans la réponse. Non seulement votre deuxième utilisation ne devrait pas être en mesure de s'engager à ce moment-là, il ne devrait pas être capable de s'ouvrir pour se lire. Sinon, lorsque vous lui permettez d'enregistrer, le deuxième utilisateur écrase le changement par le premier utilisateur. La mise en œuvre de modifications uniquement sur les pièces n'est pas une tâche facile. – nunespascal

+0

Lire sur les systèmes de contrôle de version. C'est ce que des choses comme svn, git fournissent. Comprendre comment ils fonctionnent vous aidera à construire un meilleur système. – nunespascal

0

Vous devriez utiliser une base de données pour ce genre de chose. Chaque utilisateur doit avoir son propre enregistrement dans la base de données afin que chaque enregistrement soit unique. Lorsqu'un utilisateur soumet le formulaire, son ID d'enregistrement sera associé à celui-ci afin que vous n'ayez pas de conflits.

Questions connexes