Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/07/2007, 11h54   #1
Invité de passage
 
Inscription : juillet 2007
Messages : 5
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : juillet 2007
Messages : 5
Points : 2
Points : 2
Par défaut Sémaphores sous Linux et Windows

Salut à tous !
Après des recherches infructueuses je me permet de poster mon problème sur ce forum.

Pour le contexte :
Je développe actuellement un système de statistiques. Ces dernières qui dépandent d'un enregistrement d'une table de la base de données :
Grossiérement j'ai une table statistique dont la primary key est une clé étrangère d'une autre table.

J'ai besoin de faire un semaphore au moment de la mise à jour des statistiques de la table de statistiques, mais je ne veux pas bloquer les mise à jour de toute la table, seulement de la ligne.

Je sais que la plupart de SGBD permettent le verrou de la ligne lors de la modification, mais mon problème est que ces fonctions statistiques viennes s'intégrer dans un projet dans lequel j'utilise un mapping dynamique de la base de donnée avec abstraction de celle-ci et aussi des données quelle comporte, donc pas question de tapper du SQL. Je passe donc par mes méthodes qui repose sur de l'Active Record et du CRUD, mais en version dynamique. D'où le besoin de faire du sémaphore pour verouiller mes mises à jour.

J'avais trouvé les fonctions de sémaphore de System V qui permettaient de verouiller des portions de code avec une clé, clé que je génère à partir de la primary key, ce qui me permettait de verouiller seulement les mises à jour de l'enregistrement que je modifie et de ne pas verouiller les mises à jour d'autres enregistrements. Le hic est que, comme le précise la doc, malgré qu'elle soit en standard dans php, cette extension n'est pas disponible sur les plates-formes Windows.

Le serveur de déploiement de mon projet est un serveur unix, mais mon serveur de développement est sous windows pour des raisons pratiques, je cherche donc une alternative a ce systeme de sémaphore (ou même une astuce pour faire tourner ça sous windows), qui fonctionne aussi bien sous windows que sous unix, qui me permette de verouiller une portion de code en fonction d'une clé (généré à partir de la primary key par exemple) afin de ne pas bloquer les mises à jour d'autres enregistrements de la même table, et si possible dont l'instalation (si il y a besoin) ne soit pas trop complexe et pas trop contraignantes (par rapport au serveurs de déploiement sur lequel je ne pourrais pas faire forcément ce que je voudrais).

Pour info le projet est en PHP5 !

Merci d'avance pour toutes les pistes que vous pourriez me donner !
MasterSpinal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2007, 16h55   #2
Membre régulier
 
Inscription : juin 2007
Messages : 89
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : juin 2007
Messages : 89
Points : 95
Points : 95
Bonjour, tu peux utiliser des fichiers temporaires. Tu le crée avec comme nom l'id de ta clée pour verrouiller ta ligne. Pour tester tu vérifie si le fichier existe. Une fois finit tu le supprime. Par contre niveau performance, j'espère que tu ne dois pas vérouiller 3000 lignes/secondes

Autrement tu passes par une table spéciale pour insérer les clées des lignes vérouillées. Mais il faut que tu ais un accès direct à la table.
dewsz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2007, 17h14   #3
Invité de passage
 
Inscription : juillet 2007
Messages : 5
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : juillet 2007
Messages : 5
Points : 2
Points : 2
C'est en effet une piste intéréssante à creuser, peut-être mettre au point mon propre système de semaphores, mais c'est clair que niveau performance c'est pas super.
Merci de la réponse et de la piste que tu m'a donné en tout cas
Je viendrais compléter le topic dés que j'aurais mis au point quelque chose dans ce sens, histoire d'en faire profiter la communauté.
MasterSpinal est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h59.


 
 
 
 
Partenaires

Hébergement Web