ik heb een banner systeem waarbij elke impressie als een record word opgeslagen, en elke click ook
ik heb de volgende code om de impressie/click ratio te kunnen zien van al mn banners
Dit scriptje runnen kost echter zo'n 50 seconden; er zitten zo'n 25 banners in mn database, en zo'n 90.000 rows
Elke row is dus een impresie of click.
Is het mogelijk om dit script te veranderen zodat het wat sneller gaat? Ik heb nu nog maar 25 banners
En, hoe zou ik dit kunnen doen en ook nog eens sorteren op de click ratio? (dit moet dus achteraf gebeuren oid..en gaat dit dan niet NOG (veel) langer duren)
Oja, elke dag om 0:00 worden al deze records bij elkaar opgeteld (per sponsor) en daar wordt dan 1 record van gemaakt (impresions/clicks) en in een andere tabel gestopt; deze 90.000 records zijn dus van 1 dag
ik heb de volgende code om de impressie/click ratio te kunnen zien van al mn banners
PHP:
1
| <? print("<table border='0' cellpadding='0' cellspacing='0' width='300'> <tr> <td colspan='2'><font class='f2'><b>Banner ratio's</b></font></td> </tr> <tr> <td><font class='f2'><b>BannerID</b></td> <td><font class='f2'><b>Raw Ratio</b></td> </tr>");$i=0;$time = time();$time_1 = ($time - 86400);$result2 = mysql_query("SELECT bannerid, sponsorid FROM bm_banners ORDER by bannerid");while($data = mysql_fetch_array($result2)){$bannerid = $data[bannerid];$sponsorid = $data[sponsorid];$result = mysql_query("SELECT DISTINCT ip, click FROM bm_banner_stats WHERE bannerid = '$bannerid' AND click='1' AND time BETWEEN $time_1 AND $time ORDER BY time DESC");$click_r = mysql_num_rows($result);$result = mysql_query("SELECT DISTINCT ip, click FROM bm_banner_stats WHERE bannerid = '$bannerid' AND impression='1' AND time BETWEEN $time_1 AND $time ORDER BY time DESC");$impr_r = mysql_num_rows($result);if($click_r == (NULL)) { $c='0'; } else { $c=1; } @$ratio = ($impr_r / $click_r);$ratio = round($ratio, 2);print(" <tr> <td><a href='index.php?id=1&action=2&bannerid=$bannerid' class='f2'>$bannerid</a></td> <td><font class='f2'>$c : $ratio ($impr_r en $click_r)</font></td> </tr>");$click_r = '0';$impr_r = '0';$i++;}?> |
Dit scriptje runnen kost echter zo'n 50 seconden; er zitten zo'n 25 banners in mn database, en zo'n 90.000 rows
Elke row is dus een impresie of click.
Is het mogelijk om dit script te veranderen zodat het wat sneller gaat? Ik heb nu nog maar 25 banners
En, hoe zou ik dit kunnen doen en ook nog eens sorteren op de click ratio? (dit moet dus achteraf gebeuren oid..en gaat dit dan niet NOG (veel) langer duren)
Oja, elke dag om 0:00 worden al deze records bij elkaar opgeteld (per sponsor) en daar wordt dan 1 record van gemaakt (impresions/clicks) en in een andere tabel gestopt; deze 90.000 records zijn dus van 1 dag
Leef lekker in het nu, er is niks anders