Submitted by dani0175 on
... et pour ceux qui liront ce sujet.
J'aurais aimer savoir à quoi sert la table sémaphore dans Drupal.
Ayant vu récemment qu'elle n'était pas installé par défaut sur les anciennes version de Drupal (6 et inférieurs), je me suis demandé à quoi pouvait bien servir cette table qui n'a aucun lien avec d'autres tables dans la base de données.
Je suis à l'écoute de tout ce que vous pourrez bien m'apprendre sur cette mystérieuse table.
dani0175
La table semaphore est
Permalien Soumis par Yoran le 11 Mai, 2015 - 16:21
La table semaphore est utilisée par l'API lock. Cette API permet de positionner un verrou de sorte à ce que certaines ressources ne soient pas écrites (généralement) par la même portion de code ( http://fr.wikipedia.org/wiki/S%C3%A9maphore_(informatique) )
Par exemple si tu incrémente un compteur de temps d'exécution utilisé par deux processus (ou deux requêtes), tu souhaites généralement que le premier processus ait fini d'incrémenter avant que le second ne pose sa touche. Dans ce cas tu utilises l'API drupal lock_acquire avant de mettre à jour, qui va insérer un enregistrement dans la table sémaphore de sorte à ce que le processus suivant faisant lui aussi appel à lock_acquire attendre que le premier ait d'abord exécuté à lock_release.
Un exemple typique d'usage dans drupal (de tête) c'est le cron qui va empêcher un second appel si le premier n'est pas achevé.
Ok, très bien.
Permalien Soumis par dani0175 le 12 Mai, 2015 - 10:30
Ok, très bien.
Merci pour cette explication !
Mais dans ce cas, pourquoi n'était elle pas par défaut dans Drupal (j'entends par là, pourquoi cette table n'a été ajouté à la base qu'à partir de Drupal 6.17 et pas avant) ?
Saurais tu comment c'était géré auparavant (ou si ça ne l'était pas).
Merci d'avance !
ça ne l'était pas et cela
Permalien Soumis par Yoran le 13 Mai, 2015 - 08:19
ça ne l'était pas et cela posait pas mal de problèmes :) Du coup pas mal de modules (les miens compris) avaient chacun leur solution pour gérer les locks.
Maintenant si mes souvenirs sont exacts cela est arrivé par le biais d'un souci (bug ou sécurité) qui nécessitait cela pour être corrigé. Mais il faudrait éplucher les release notes pour avoir l'origine exacte.
Très bien,
Permalien Soumis par dani0175 le 26 Mai, 2015 - 11:40
Très bien,
Merci beaucoup pour tous ces renseignements.