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 !![]()
Partager