Je voudrais savoir si c'est possible de faire en sorte qu'un script PHP ne puisse s'effectuer que pour une seule personne en même temps.
J'avais oublié de préciser : j'utilise PHP sous Windows.
Merci
Euh quel intérêt ?
Ajouter des trucs dans une table, récupérer l'id du dernier truc entré, se resservir de cet id pour faire une autre requête.
Pb :
user1 ajoute son truc
user2 ajoute son truc
user1 demande le dernier id => il récupère celui généré par la requête de user2 => pas bon
Voilà
Ce que je veux faire c'est :
user1 crée un sémaphore
Il réalise les opérations souhaitées (ajout,recherche de l'id , requête avec cet id)
Tant qu'il n'a pas débloqué le sémaphore, personne ne peut entrer dans la portion de code protégée par ce sémaphore
Peter Pan
24/10/2002 8:54
Ben je sais pas, tu initialises un champ dans la base à 0 qui passe à 1 quand un utilisateur entre dans la procédure, et un test if machin = 1 qui affiche un message à l'utilisateur 2 demandant d'attendre 5 secondes et qui fait un refresh ensuite (évidemment après avoir repassé à 0 la variable machin à la fin de a procédure).
Oui c'est vrai c'est une solution, mais c'est pas très propre.
Peter Pan
24/10/2002 9:04
C'est clair
Merci pour tes liens Pop mais j'y suis déjà allé, ces fonctions ne fonctionnent pas sous Windows, et c'est bien là mon problème.
a propos de PHP je souhaite m'y mettre mais je n'ai aucune idée de ce que je peux faire avec ..... (mis a part un forum par exemple
)
Vous pourriez pas me donnez des pistes siouplé marfi
PHP, c'est fait pour faire des sites Web.
Après dans un site Web, tu peux y faire ce que tu veux.
Mmm, je sais pas ce que ça vaut, mais peut-être qu'en te faisant un module de gestion de sémaphores maisons tu peux résoudre le pb. Moi j'utiliserai un fichier properties pour y mettre mes semaphores et leur état, pas la base.
Mais bon, php c'est pas mon méga domaine de compétences donc je ne sais pas trop!
Arsenik_
24/10/2002 10:08
QUOTE (Ryle @ 24/10/2002 10:42) |
PHP, c'est fait pour faire des sites Web. Après dans un site Web, tu peux y faire ce que tu veux. |
ah bon je croyais que c'etait pour tondre la pelouse le PHP .....
Appel moi blonde aussi
Non mais ca je sais bien que c'est pour le web mais ce que je veux dire c'estq ue je ne sais pas par ou commencer a part le celebre "hello world" ou infophp .....
Pop > ouais je crois que bien que c'est ce que je vais faire, utiliser un fichier car visiblement y a pas de modules déjà dispo pour le faire et j'ai pas trop le temps de me pencher sur la création d'un.
Sinon, Arsenik, essaie de faire un forum, un module d'actualités, une mailing liste,... Je disais pas ça pour te vexer hein.
A priori, la premiere solution qui me vient a l'esprit est un module connecté en permanence au serveur tant que la page est ouverte (p2p). Pour ca je vois bien un applet java. Enfin question developpement de la chose, c'est une autre paire de manches.
un fichier de lock ( à écrire )
ou sinon, un fichier qui génère le fichier qui t'intéresse, et qui utilise l'identifiant de session pour accéder au dit fichier
index.php génère : truc.php
celui qui passe sur index.php recoit un id de session, qui permet d'utiliser truc.php ...
L'applet java ouais mais non car pas le temps de réaliser ce genre de développement.
Qu'est ce que t'entends par p2p (peer to peer) ?
En fait la page , une fois ouverte, n'a plus besoin du système de verrouillage car les 2 3 requêtes s'exécutent au début de la page , je n'ai pas besoin de bloquer la page tant qu'elle est ouverte.
Sinon pour les variables de session , j'y ai bien pensé mais je crois que je préfère la solution du fichier, ça évite de surcharger la base avec des infos pas si utiles car je ne me sers pas des variables de session dans le reste du site.
Après se pose le pb des accès concurrents au fichier
mais il me semble que ça PHP le gère en natif.
Sinon, tu es sur quelle version de base de données ?
Tu pourrais utiliser le principe des transactions...
http://www.mysql.com/doc/en/InnoDB_transac...tion_model.html
C'est pas du Mysql, j'utilise une liaison ODBC qui pointe sur une base Access.
ryle> Une architecture typique Clients/Serveur via Java, c'est a mon avis une solution pratique de remettre à jour en permanence les informations et de controler les actions clients.
Mais c'est certain que le temps de developpement d'un applet peut etre rebuttant selon la complexité.
Ouais et j'ai pas beaucoup de temps. Faudrait que tout soit bouclé pour demain soir.
En fait c'est pour faire un forum, pour ajouter un sujet et le premier message attaché.
ah
t'as beaucoup beaucoup plus simple
j'imagine t'as une variable qui contient la date/heure ou timestamp de l'envoi du post (admettons $date), que tu insères dans un champ de ta table des sujets, puis une qui a le titre du sujet et l'auteur du sujet.
tu inseres ta ligne dans ta table des sujets, puis tu fais une requete basée sur la date/heure d'insertion, le nom et le titre pour récupérer l'id
Bon finalement je passe par un flock sur un fichier vide, qui sert donc de sémaphore . Ta solution n'est pas secure à 100%.Imagine que deux personnes mettent le même message, avec le même nom à la même heure...
Bon c'est clair que c'est peu probable, mais je préfère un truc béton.
En fait je couple le flock sur le fichier (normalement 100% fiable) avec une requête sur nom date message et titre.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please
click here.