[Résolu] Question pour ma culture ...

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

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