Hi
Ik snap er niks van
Op 1 van onze servers draait precies 1 project, een grote medialibrary. Op die server staat webalizer geinstalleerd die -per virtual- alle datatransfers logt.
So far so good. De webalizer heeft over de maand oktober tot nu toe zo'n 162GB aan datatransfer gelogd. Niet ondenkbaar.
Nu heb ik in de medialibrary applicatie een statistiek logger gemaakt, die van ieder mediabestand bij downloaden de filesize opvraagt, en deze in een (mysql) database samen met wat andere statistische gegevens opslaat.
Nu komt 't: Mijn applicatie logt over dezelfde periode 'slechts' 83GB .. da's bijna de helft van wat webalizer logt !
Ik vraag me dus af waar die verschillen vandaan komen!
Bestanden die gedownload worden worden -altijd- via dit script gedownload:
En de log functie in Statistic:
Als er een fout optreedt in een query krijg ik automatisch een mailtje. Die heb ik niet gehad. Ik kan er dus alleen maar vanuit gaan dat alle queries gedaan worden.
Als het inserten van records in de statistieken ga testen, werkt 't in alle gevallen die ik kan verzinnen prima; op 't moment dat er een file gedownload wordt, wordt deze ook gelogged.
ERGENS verlies ik dus toch zo'n 80GB aan data. De hele applicatie, de html , css en alle requests eromheen zorgen natuurlijk wel voor wat overhead die wel door webalizer gelogged worden als datatransfer, maar natuurlijk niet in de library stats terugkomen. Ik schat dit zelf -al aan de hoge kant- op zo'n 5GB per maand; not nearly enough to cover die 80GB dus.
Mis ik hier nu iets heel triviaals? Ben ik zo vreselijk n00by bezig, of rekent webalizer compleet anders dan bovenstaande code ?
Iemand met ervaring, verstand en/of inzicht in dit raadsel !?
Ik snap er niks van
Op 1 van onze servers draait precies 1 project, een grote medialibrary. Op die server staat webalizer geinstalleerd die -per virtual- alle datatransfers logt.
So far so good. De webalizer heeft over de maand oktober tot nu toe zo'n 162GB aan datatransfer gelogd. Niet ondenkbaar.
Nu heb ik in de medialibrary applicatie een statistiek logger gemaakt, die van ieder mediabestand bij downloaden de filesize opvraagt, en deze in een (mysql) database samen met wat andere statistische gegevens opslaat.
Nu komt 't: Mijn applicatie logt over dezelfde periode 'slechts' 83GB .. da's bijna de helft van wat webalizer logt !
Ik vraag me dus af waar die verschillen vandaan komen!
Bestanden die gedownload worden worden -altijd- via dit script gedownload:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| $productID = intval($_GET['productID']); // which product $lngID = intval($_GET['lngID']); // language version of the brochure $countryID = intval($_GET['countryID']); $btype = intval($_GET['btype']); $query = "select location from brochure where productID = $productID and languageID = $lngID "; $query .= "and btype = $btype "; $db->query($query); if ($db->next_record() ) { $loc = $db->f('location'); $fullPath = $config['DLDir'].$loc; if (file_exists($fullPath)) { $fsize = intval(filesize($fullPath)); $stat = new Statistic; $stat->log($productID, $countryID, $lngID, $btype, $fsize); $loc = $config['pdfs'].$loc; header( "Content-Disposition: attachment; filename=$loc" ); header( "Content-type: application/octet-stream;"); $url = $config["URL"].substr($loc,1); Header("Location: $url"); } else { echo "Sorry, Brochure: $loc does not exist"; } } else { $msg = "Sorry, Brochure with ID: $productID and languageID: $lngID does not exist"; echo $msg; } |
En de log functie in Statistic:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| function log($productID, $countryID, $lngID, $version, $fsize) { global $languageID; // session value $languageID = intval($languageID); // languageDisplay inside the Library if ($languageID == 0) { $languageUD = $countryID; } $now = intval(date('Ymd')); // select number of downloads of this product, version, language & languagedisplay (country) made today $query = "select count(*) as cnt from statistics "; $query .= "where productID = $productID "; $query .= "and version = $version "; $query .= "and typeID = 1 "; $query .= "and languageID = $lngID "; $query .= "and languageDisplayID = $languageID "; $query .= "and getDate = $now "; $this->db->query($query); $this->db->next_record(); $cnt = $this->db->f('cnt'); if ($cnt == 0) { // no downloads today, enter new record $ts = time(); $query = "insert into statistics (statisticID,productID, typeID, version, languageDisplayID, languageID, "; $query .= "counter, totalsize, getDate) values ($ts, $productID, 1, $version, $languageID, $lngID, "; $query .= "1, $fsize, $now) "; $this->db->query($query); } else { // update data for today's download. $query = "update statistics set counter = counter + 1, totalsize = totalsize + $fsize, getDate = $now "; $query .= "where productID = $productID "; $query .= "and version = $version "; $query .= "and typeID = 1 "; $query .= "and languageID = $lngID "; $query .= "and languageDisplayID = $languageID "; $query .= "and getDate = $now "; $this->db->query($query); } } |
Als er een fout optreedt in een query krijg ik automatisch een mailtje. Die heb ik niet gehad. Ik kan er dus alleen maar vanuit gaan dat alle queries gedaan worden.
Als het inserten van records in de statistieken ga testen, werkt 't in alle gevallen die ik kan verzinnen prima; op 't moment dat er een file gedownload wordt, wordt deze ook gelogged.
ERGENS verlies ik dus toch zo'n 80GB aan data. De hele applicatie, de html , css en alle requests eromheen zorgen natuurlijk wel voor wat overhead die wel door webalizer gelogged worden als datatransfer, maar natuurlijk niet in de library stats terugkomen. Ik schat dit zelf -al aan de hoge kant- op zo'n 5GB per maand; not nearly enough to cover die 80GB dus.
Mis ik hier nu iets heel triviaals? Ben ik zo vreselijk n00by bezig, of rekent webalizer compleet anders dan bovenstaande code ?
Iemand met ervaring, verstand en/of inzicht in dit raadsel !?