L'analyse n'est pas une opération que vous pouvez raisonnablement espérer rapide; vous devez concevoir votre extension de telle sorte que l'analyse ne soit nécessaire que lorsque le wikitext d'une page (ou de certaines de ses dépendances) change - ie. intégrer n'importe quelle logique dans l'un des crochets de l'analyseur, tels que InternalParseBeforeSanitize
et stocker les résultats.
Normalement, vous utiliserez la table page_props
pour cela (voir ParserOutput::setProperty
) mais si c'est quelque chose de sécurité, vous devriez examiner attentivement si cela fonctionne pour vous (c'est par page, pas par révision, et il y a une petite fenêtre entre la page et la table des accessoires mise à jour). Dans une version future de MediaWiki, vous pourrez stocker des métadonnées arbitraires par révision dans des emplacements virtuels MCR; pour l'instant vous devez l'implémenter à partir de zéro, dans votre propre table, dans l'extension. Vous pouvez toujours effectuer une mise en cache légère si vous estimez que le délai est acceptable sur les pages peu consultées (utilisez ObjectCache::getMainWANInstance()
pour obtenir une instance WANObjectCache
et utilisez la méthode getWithSetCallback
).
Faites-le lorsque la page est enregistrée, enregistrez le résultat. – Tgr
J'ai besoin du résultat analysé dans le hook userCan. Y at-il une variable où je peux mettre en cache le résultat analysé? – user1258361