Help - Search - Member List - Calendar
Full Version: Des Sémaphores En Php ?
OpenSpace > Zone Ordinateurs > Programmation
Ryle
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



Guepi
Euh quel intérêt ? blink.gif
Ryle
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
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).



Ryle
Oui c'est vrai c'est une solution, mais c'est pas très propre.
Peter Pan
C'est clair laugh.gif
Ryle
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.
Arsenik_
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 happy.gif )
Vous pourriez pas me donnez des pistes siouplé marfi
Ryle
PHP, c'est fait pour faire des sites Web.
Après dans un site Web, tu peux y faire ce que tu veux.
PoP
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.
user posted image

Mais bon, php c'est pas mon méga domaine de compétences donc je ne sais pas trop! smile.gif
Arsenik_
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 ..... tongue.gif
Appel moi blonde aussi blink.gif

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 .....

Ryle
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.
RICO
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.
Guepi
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 ...
Ryle
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 icon_evil.gif mais il me semble que ça PHP le gère en natif.
Guepi
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
Ryle
C'est pas du Mysql, j'utilise une liaison ODBC qui pointe sur une base Access.
RICO
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é.



Ryle
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é.
Darhf
ah wink.gif

t'as beaucoup beaucoup plus simple biggrin.gif

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 biggrin.gif
Ryle
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.
Invision Power Board © 2001-2024 Invision Power Services, Inc.