<?php $start_time=time(); ### letzte Änderung 23.06.11 11:24 ### pattern_referer.dta analysieren ### http://www.php-web-statistik.de/cgi-bin/yabb/YaBB.pl?num=1305215461/0#2 // Details von Seitenherkünfte werden bei großen Dateien teilweise garnicht mehr aufgebaut // aus index.php funktioniert der Link nach dem Kürzen nicht mehr // "<a href=" führt zu Fehler // folgende Variablen können als Get-, POST- oder SESSION-Parameter übergeben werden: // Beispiel: ?asb=150&aus=true&hdz=true&dop=true&doa=true&dbp=true&dba=true if ((isset($_REQUEST['asb']))&&(is_numeric($_REQUEST['asb']))) {$auf_stellen_begrenzen=$_REQUEST['asb'];} else {$auf_stellen_begrenzen=200;} if ((isset($_REQUEST['aus']))&&($_REQUEST['aus']=='true')) {$aus=true;} else {$aus=false;} // Datei ausgeben if ((isset($_REQUEST['hdz']))&&($_REQUEST['hdz']=='true')) {$hdz=true;} else {$hdz=false;} // Hex durch Zeichen ersetzen if ((isset($_REQUEST['dop']))&&($_REQUEST['dop']=='true')) {$dop=true;} else {$dop=false;} // auf doppelte Original-Schlüssel prüfen if ((isset($_REQUEST['doa']))&&($_REQUEST['doa']=='true')) {$doa=true;} else {$doa=false;} // doppelte Original-Schlüssel anzeigen if ((isset($_REQUEST['dbp']))&&($_REQUEST['dbp']=='true')) {$dbp=true;} else {$dbp=false;} // auf doppelte begrenzte Schlüssel prüfen if ((isset($_REQUEST['dba']))&&($_REQUEST['dba']=='true')) {$dba=true;} else {$dba=false;} // doppelte begrenzte Schlüssel anzeigen set_time_limit(0); $v=array('%2520','%20','%21','%22','%23','%24','%25','%26','%27','%28','%29','%2A','%2B','%2C','%2D','%2E','%2F','%3A','%3B','%3C','%3D','%3E','%3F','%40','%5B','%5C','%5D','%5E','%5F','%60','%7B','%7C','%7D','%7E'); $n=array( " ", " ", "!", '"', "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", ":", ";", "<", "=", ">", "?", "@", "[", "\\", "]", "^", "_", "`", "{", "|", "}", "~"); $x=0; $f1=false; $f2=false; $f3=false; $lts=0; $b=0; $bb=0; $hdz_anz=0; $do['']=''; $doz=0; $dob=0; $db['']=''; $dbz=0; $dbb=0; $kz_u=false; $path='../'; // ggf. anpassen include($path.'config/config.php'); # $db_active=1; // Test if ($db_active==1) { include($path.'config/config_db.php'); $db_suffix='_referrer'; $file='DB('.$db_host.' '.$db_name.' '.$db_prefix.$db_suffix.')'; if (!mysql_pconnect($db_host,$db_user,$db_password)) {die(mysql_error());} if (!mysql_select_db($db_name)) {die(mysql_error());} $result=mysql_query('SELECT referrer,id FROM '.$db_prefix.$db_suffix.';'); if (!$result) {die(mysql_error());} $aus=false; } else { $file='log/pattern_referer.dta'; $handle=fopen($path.$file,'r'); if ($aus) {$file_n='log/pattern_referer_n.dta';$handle_n=fopen($path.$file_n,'w');} } do { $x++; if ($db_active==1) {if (!$a=mysql_fetch_array($result)) {break;}} else { if (feof($handle)) {break;} $buffer=fgets($handle,6000); $buffer=str_replace(array("\r","\n"),array('',''),$buffer); if ($buffer=='') {continue;} $a=explode('|',$buffer); } $sl=strlen($a[0]); $b=$b+$sl; $f=100; if ($sl<500) {$f=50;} if ($sl<200) {$f=20;} if ($sl<100) {$f=10;} $z=(floor(($sl-1)/$f)+1)*$f; if (!isset($s[$z])) {$s[$z]=0;$s1[$z]=0;} $s[$z]++; $s1[$z]=$s1[$z]+$sl; if ($dop) { if (array_key_exists($a[0],$do)) { ueberschrift(); if ($doa) {echo '<font color="red">'.$a[1].'|'.$a[0].'</font><br>';} $doz++; $dob=$dob+strlen($a[0]); } else {$do[$a[0]]=true;}} if ($hdz) { $a[0]=str_replace($v,$n,$a[0]); $hdz_anz=$hdz_anz+(($sl-strlen($a[0]))/2);} if (strlen($a[0])>$auf_stellen_begrenzen) {$a[0]=substr($a[0],0,$auf_stellen_begrenzen).'~';} $bb=$bb+strlen($a[0]); if ($aus) {fwrite($handle_n,$a[0].'|'.$a[1])."\n";} if ($dbp) { if (array_key_exists($a[0],$db)) { ueberschrift(); if ($dba) {echo $a[1].'|'.$a[0].'<br>';} $dbz++; $dbb=$dbb+strlen($a[0]); } else {$db[$a[0]]=true;}} } while (true); if ($db_active!=1) { fclose($handle); if ($aus) {fclose($handle_n);} } if ($dop) {echo '<br><font color="red">'.number_format($doz,0,',','.').' doppelte Original-Schlüssel = '.number_format($dob,0,',','.').' Byte</font><br>';} if ($dbp) {echo number_format($dbz,0,',','.').' doppelte begrenzte Schlüssel = '.number_format($dbb,0,',','.').' Byte<br><br><br>';} echo 'Referer mit bis zu Stellen in '.$file.'<hr><pre>'; ksort($s); echo 'Zeilen '; print_r($s); echo number_format($x,0,',','.').' Zeilen<hr>'; ksort($s1); echo 'Byte '; print_r($s1); echo number_format($b,0,',','.').' Byte<hr>'; echo number_format($bb,0,',','.').' Byte bei Begrenzung auf '.$auf_stellen_begrenzen.' Stellen<br>'; if ($dbb) {$bb=$bb-$dbb; echo number_format($bb,0,',','.').' und (informativ) nach eliminieren doppelter Schlüssel<br>';} if ($hdz) {echo number_format($hdz_anz,0,',','.').' Hex durch Zeichen ersetzt<br>';} if ($aus) {echo $file_n.' erzeugt<br>';} echo '*** Ende *** Verarbeitungszeit: '.(time()-$start_time).' Sekunden'; function ueberschrift() { global $kz_u; if (!$kz_u) {$kz_u=true; echo 'doppelte Schlüssel<hr>';}} ?>
// 4.4.00 Text-Dateien, langsamer Testrechner (alle Floatbox-Anzeigen extrem langsam) // Referer begr. auf 100 Stellen // Ursprungswerte in DB // Einstellung: // Creator Lesezeilen 5000 // Index Creator Lesezeilen 30000 // Detaillierte Referer-Informationen anzeigen? ja nein ja ja // Zeiten des Users Abfragen für Aufbau (bis auf cache und Index erstellen mit F5) von: // Cache neu erstellen Min 6:25 5:14 4:00 4:50 // Index neu erstellen 3:00 // sysinfo.php (F5) 0:09 0:09 // counter (F5) 0:00 // index.php (gestoppt mit Stat.Cache wird aktuakis.) 0:17 0:13 0:09 0:09 // (angezeigt Sek.) 1.72-2.29 0.86-1.69 0.84-1.59 1.80-2.77 // (F5) 0:06 0:05 0:04 0:05 // lasthits.php 0:25 0:22 0:20 0:07 // (Tag vor/zurück) 0:05 0:05 0:03 0:03 // Details von Seitenherkünfte 0:26 0:23 0:18 0:23 // Größe und Zeilen: // cache_visitors.php KB 9.655,95 612,24 596,39 9.657,27 // 55.371 19.006 18.985 55.411 // logdb_backup.dta KB 13.675,70 // 303.123 // pattern_referer.dta KB 8.836,96 3.189,11 // 36.882 36.882
... function pattern_matching ( $meta , $value ) { $auf_stellen_begrenzen=100; if ((($meta=="referrer")||($meta=="referer"))&&(strlen($value)>$auf_stellen_begrenzen)) {$value=substr($value,0,$auf_stellen_begrenzen).'~';} //------------------------------------------------------------------ // Replace all sitename and referer values to the pattern strings coming from the file config/pattern_string_replace.inc ...
<?php ### letzte Änderung 21.06.11 14:48 ### doppelte Schlüssel aus pattern_referer.dta reorganisieren ### http://www.php-web-statistik.de/cgi-bin/yabb/YaBB.pl?num=1305215461/0#6 $i=0; $o=0; $path='../'; // ggf. anpassen $neu_durchnummerieren=true; // ggf. anpassen if (!$neu_durchnummerieren) {echo 'nicht ';} echo 'neu durchnummeriert<br>'; $file='log/pattern_referer.dta'; $handle=fopen($path.$file,'r'); $file_n='log/pattern_referer_n.dta'; $handle_n=fopen($path.$file_n,'w'); while (!feof($handle)) { $i++; $buffer=fgets($handle,6000); if ($buffer!='') { $a=explode('|',$buffer); $a[1]=str_replace(array("\r","\n"),array('',''),$a[1]); if (($o==0)||(!array_key_exists($a[0],$new))) { $o++; if ($neu_durchnummerieren) {$x=$o;} else {$x=$a[1];} $new[$a[0]]=$x; fwrite($handle_n,$a[0].'|'.$x."\n"); $s1=$a[1];} $ref[$a[1]]=$new[$a[0]];}} if ((!$neu_durchnummerieren)&&($s1!=$a[1])) {fwrite($handle_n,$a[0].'|'.$a[1]);} fclose($handle); fclose($handle_n); echo $i.' Zeilen aus '.$file.' eingelesen<br>'; echo $o.' Zeilen in '.$file_n.' ausgegeben<br>'; logdb('log/logdb.dta','log/logdb_n.dta'); logdb('log/logdb_backup.dta','log/logdb_backup_n.dta'); logdb('log/logdb_temp.dta','log/logdb_temp_n.dta'); echo '*** Ende ***'; function logdb($i, $o) { global $path,$ref; $handle=fopen($path.$i,'r'); $handle_n=fopen($path.$o,'w'); while (!feof($handle)) { $buffer=fgets($handle,6000); if (($buffer!='')&&($buffer!="\n")) { $a=explode('|',$buffer); if ($a[5]) {$a[5]=$ref[$a[5]];} fwrite($handle_n,$a[0].'|'.$a[1].'|'.$a[2].'|'.$a[3].'|'.$a[4].'|'.$a[5].'|'.$a[6].'|'.$a[7].'|'.$a[8]);}} fclose($handle); fclose($handle_n); echo $path.$o.' erstellt<br>';} ?>