Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

OpenSpace _ Programmation _ Des Sémaphores En Php ?

Ecrit par: Ryle 24/10/2002 7:49

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

Ecrit par: Guepi 24/10/2002 8:33

Euh quel intérêt ? blink.gif

Ecrit par: Ryle 24/10/2002 8:39

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

Ecrit par: 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).

Ecrit par: Ryle 24/10/2002 8:58

Oui c'est vrai c'est une solution, mais c'est pas très propre.

Ecrit par: Peter Pan 24/10/2002 9:04

C'est clair laugh.gif

Ecrit par: PoP 24/10/2002 9:18

Des éléments de réponse ici?
http://php.benscom.com/manual/en/ref.sem.php
http://php.benscom.com/manual/fr/ref.sem.php

Ecrit par: Ryle 24/10/2002 9:25

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.

Ecrit par: Arsenik_ 24/10/2002 9:26

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

Ecrit par: Ryle 24/10/2002 9:42

PHP, c'est fait pour faire des sites Web.
Après dans un site Web, tu peux y faire ce que tu veux.

Ecrit par: PoP 24/10/2002 10:08

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

Ecrit par: 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 ..... 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 .....

Ecrit par: Ryle 24/10/2002 10:13

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.

Ecrit par: RICO 24/10/2002 10:19

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.

Ecrit par: Guepi 24/10/2002 10:20

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

Ecrit par: Ryle 24/10/2002 10:36

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.

Ecrit par: Guepi 24/10/2002 10:55

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

Ecrit par: Ryle 24/10/2002 11:10

C'est pas du Mysql, j'utilise une liaison ODBC qui pointe sur une base Access.

Ecrit par: RICO 24/10/2002 12:10

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

Ecrit par: Ryle 24/10/2002 13:03

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

Ecrit par: Darhf 24/10/2002 18:47

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

Ecrit par: Ryle 24/10/2002 19:23

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.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)