Pirmas

Modules hook system. Performance. Hooks cashing.

kategorija

Sveiki,

Pradėjau nagrinėti Drupal'a ir iskilo keletas klausimu. Negavau atsakymu i juos drupal.org. Gal kas galetu atsakyti i juos cia. Manau nebus problema jei neversiu is anglu kalbos.

http://drupal.org/node/372705

Hello All,

While I'm new in PHP and Drupal I have some questions about modules hook system in Drupal. I've read book 'Pro Drupal Development' and watched 'lynda.com' training course but still hadn't got any answers to these questions.

1. As I understand that on each action the notifications are send to all enabled modules. So, more modules are activated the bigger this list becomes. What influence is on performance when registering more and more modules?

2. I see in the code(include\module.inc) that hooks' list is cashed into $implementations variable in function

function module_implements($hook, $sort = FALSE, $refresh = FALSE)

, but I've found only two places where this functions is called with param $refresh as TRUE. And it's in functions module_disable, module_enable. As I understand these functions called only when admin is enabling/disabeling modules from front-end.

So when hooks list is initialized, how often it's refreshed and were is stored during the ssesion? Is it stored in $_SESSION variable or in DB?

Thank you for the answers and links into similar discussions.
marukas

Na module_enable / _disable

Na module_enable / _disable hookinas adminkeje kai nuzymi ar pazymi kurie moduliai bus aktyvuoti / deaktyvuoti.

1. niekur neradau statistikos ar panasiu klausimu / atsakymu i si klausima, taciau is savo patirties galiu pasakyti kad tai "really does some influence". Saitas su 20 moduliu pastebimai suleteja. Dalinai del queriu gausybes kurias reikia atlikti moduliams (jeigu ju turi). Teko skaiciuoti vienam... sudejus pvz ad moduli, keleta blokeliu ir custom query snipeta i front-page gavosi ~200 queriu (joinai ir paprasti). Tai is esmes galima sakyti kuo daugiau moduliai interferuojasi su contentu, daro kazkokius nestandartinius actionus su duomenimis bei isveda juos kiekviename peidze (kas pasako, kad kiekvienu kliku i nauja page gauni po serija nauju queriu) tai reagavimo laikas tikrai pailgeja.

Sprendimas butu naudoti cache, bet ne visi moduliai 3rd-parity palaiko keshavima. Tektu paciam ji pasirasyti. Minusas keshavimo toks kad komentavimo sistema irgi ieina.. ir kol sureaguoja tai praeina laiko tarpas nustatytas cron'ui. keshuoti pr naujo kas 30sec. nelabai apsimoka, o kai vartotojas nepamato is kart zinutes, veda per nauja ar gauna nusivylima... irgi ne sprendimas :)

2. kaip inicijuojamas hook listas tai irgi geras klausimas. Tai gali pamatyti bootstrape kaip ir kokia tvarka kvieciami moduliai ir jei reikia hookai.

Surinktas turinys