Banner megjelenés mérése blockban

kovarik képe

Sziasztok,

Létrehoztam egy új tartalomtípust, amely tartalmazza a bannert is.
Blokkban szeretnék véletlenszerűen megjeleníteni mindig egy képet, és mérni azt, hogy ez a banner hányszor jelent meg.

Drupal 7-t használok, azt már megoldottam, hogy véletlenszerűen jelenjenek meg a bannerek, viszont a "méréssel" akadt egy kis gondom. Egy oldallehíváskor 5x fut le az sql-kód. Forráskódból hoztam létre a blokkot, nem tudom, hogy ez bekavarhat-e.

Először ezzel próbálkoztam:
banner lekérdezése:
db_query("SELECT nid FROM {node} WHERE type='microbanners' ORDER BY RAND() LIMIT 1")->fetchAll();

Megjelenés növelése (külön táblában):
db_query("INSERT INTO {banners} (nid, bshow, bclick) VALUES('".$node->nid."', '1', '1') ON DUPLICATE KEY UPDATE bshow=bshow+1");

Természetesen ezt kipróbáltam két különálló sql-le is, attól függően, hogy a node id szerepelt-e már vagy sem egy INSERT-el és UPDATE-el. Ugyanúgy többször kerültek be az értékek.

Érdekes módon, hiába csak egy bannert kérdezek le előtte, mégis az összes olyan node bekerül ebbe a táblába, amely microbanner típusú.

Gondoltam, velem van a baj, közvetlenül a blokk megjelenítéséhez betettem még ezt a kódot:
db_query("INSERT INTO banners_show SET nid='231', visit_time=NOW()");

Érdekes módon ez is 5x fut le egy oldalletöltéskor. Ezután gondolkodtam el, hogy elképzelhető: a templatek összeállításakor és kigenerálásakor ötször hívja meg azt a függvényt, amiben ez a kód van.

Milyen alternatívák vannak még arra, hogy mérőkódot helyezzek el?

Blokk-kezelő függvényem:

function mymodule_block_view($delta = '') {
$block = array();
$block['subject'] = '';

switch($delta) {
case 'microbanner' :
$block['content'] = mymodule_microbanner();
break;
}
}

Köszönöm,

Krisztián

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: