PHP-Web-Stat Support Forum | |
https://www.php-web-statistik.de/cgi-bin/yabb/YaBB.pl
Allgemein >> Dokumentationen >> Größe pattern_referer.dta / Abbruch bei Cache akt. https://www.php-web-statistik.de/cgi-bin/yabb/YaBB.pl?num=1305215462 Beitrag begonnen von hr3 am 12.05.11 um 17:51:01 |
Titel: Größe pattern_referer.dta / Abbruch bei Cache akt. Beitrag von hr3 am 12.05.11 um 17:51:01
Bei Statistiken mit großen Datenmengen (viele Bewegungen, Daten werden schon seit Jahren gesammelt und/oder viele unterschiedliche und lange Referer-Informationen) kann das Programm cache_creator.php beim Erstellen und Aktualisieren durch Überschreiten von Memory Limit (ggf. auch MaxExecutionTime) in eine Schleife laufen. Dieses ist unabhängig von Textdatei- oder Datenbank-Installation. Maßnahmen:
Der erste Schritt sollte immer eine Analyse sein. Dazu das folgende Programm. Es liest die pattern_referer.dta bzw. referrer-DB-Tabelle und zeigt die Datenkonstellationen. Beispiel-Anzeige im Folgenden. Zur Steuerung können folgende GET- ,POST- bzw. Session/Cookie-Parameter angegeben werden. Die Default-Werte sind false, soweit nicht anders beschrieben. asb=xxx // auf xxx Stellen begrenzen, default=200 aus=true // log/pattern_referer_n.dta erzeugen (nur Text-Datei-Installationen) hdz=true // Hex durch Zeichen ersetzen dop=true // auf doppelte Original-Schlüssel prüfen doa=true // doppelte Original-Schlüssel anzeigen dbp=true // auf doppelte begrenzte Schlüssel prüfen dba=true // doppelte begrenzte Schlüssel anzeigen Das Programm kann im laufenden Betrieb mit allen Parameterkombinationen immer wieder aufgerufen werden. Erst wenn das Überarbeiten der referer-Datei mit der richtigen Länge als Lösung angesehen wird, sollte es im Wartungsmodus ausgeführt und dann die Originaldatei durch die neu erzeugte ersetzt werden. Wie immer nach Datensicherung und ohne Gewähr. Danach muß der Cache neu erstellt und die Anzeigen gewissenhaft geprüft werden. Das Umsetzen der Hex-Werte in (lesbare) Zeichen ist optional, verringert der Größe nur minimal, erhöht jedoch die Lesbarkeit. Das begrenzen der Referer-Länge kann die Datei unter Umständen dramatisch verkleinern. In der Regel steht nach ca. Stelle 100 nichts wirklich relevantes mehr. Allerdings geht damit die LINK-Funktion verloren. Ob und wie diese Programm eingesetzt wird muß jeder für sein spezielles Umfeld entscheiden. Es kann auch als Muster dienen und durch eigenen Logiken ergänzt werden. Z.B. inteligentes Kürzen des Satzes um bestimmte überflüssige Infos oder nach festgelegten Begriffen (wie z.B. .jpg, .html usw.). Ich muß noch darauf hinweisen, dass es im Test schon mal vorgekommen ist, dass in einem Satz <a href= stand und das zugehörige Ende abgeschnitten wurde. Dann werden alle folgenden Zeilen aus pattern-referer.dta unterstrichen als Link angezeigt. Kann mit einem Editor geprüft und korrigiert werden. Auch ohne, aber erst Recht nach dem Begrenzen von Zielen sind doppelte Schlüssel möglich. Diese werden hier nur aufgezeigt. Zum Löschen ist gleichzeitig eine Korrektur der logdb-Dateien erforderlich. Damit läßt sich die Datei nochmals erheblich verkleinern. Diese Maßnahmen wirken sich auch postiv auf die Verarbeitungszeiten aus. Das aktualisieren der Cache-Dateien geht schneller (ok. passiert nicht permanent und ist für Seiten-Nutzer nur spührbar, wenn gerade der Intervall für autom.Aktualisieren erreicht wurde) aber auch die Cache-Datei selber wird gravierend kleiner und das merkt jeder, der den Counter angezeigt bekommt. Sie war vor der Bearbeitung 10MB und danach 0,5Mb groß und muß bei jedem Aufruf komplett eingelesen werden. Siehe auch http://www.php-web-statistik.de/cgi-bin/yabb/YaBB.pl?num=1304324086 Um die Datei nicht wieder aufzublähen und mühsam immer wieder zu reorganisieren, ist eine Anpassung der track.php um ein Begrenzen des Referers nach den gleichen Regeln erforderlich. Für DB-Installationen ist nur die Analyse verfügbar. Die Daten müssen dann manuell bearbeitet werden. |
Titel: Re: Größe pattern_referer.dta / Abbruch bei Cache akt. Beitrag von hr3 am 12.05.11 um 19:05:31 Zitat:
|
Titel: Re: Größe pattern_referer.dta / Abbruch bei Cache akt. Beitrag von hr3 am 12.05.11 um 19:07:08 Code (]<?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'):
Voraussetzung Datensicherung. Ergebnis prüfen. Ohne Gewähr. |
Titel: Re: Größe pattern_referer.dta / Abbruch bei Cache akt. Beitrag von hr3 am 12.05.11 um 22:32:59
Da das Datenvolumen Einfluß auf die Aufbereitungsgeschwindigkeit hat, habe ich mit den oben protokollierten Testdaten die folgende Meßreihe ermittelt. Im meinem Fall stellte sich heraus, dass Floatbox das entscheidende Kriterium war und deaktiviert werden mußte. Siehe http://www.php-web-statistik.de/cgi-bin/yabb/YaBB.pl?num=1305231273/0#0
Dennoch ist aus den Differenzzeiten die Auswirkung der Datenmenge und entsprechenden Einstellungen gut erkennbar. Ich würde mich freuen, wenn auch anderer ihre Meßergebnisse hier einstellen würden. Darüber können Engpässe erkannt und ggf. generelle Maßnahmen abgeleitet werden. [code]// 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[/code] |
Titel: alternative Lösungsansätze Cache Beitrag von hr3 am 13.05.11 um 15:29:07
Um die Verarbeitung zu Beschleunigen, die Datei zu verkleinern und Informationen nicht redundant zu halten aber die Logik nicht volkommen zu verändern, könnte als Schlüssel für die Tabellen in der Cach-Datei nicht mehr der Begriff aus den pattern-Dateien, sondern der jeweilige in den logdb-Dateien gespeicherte Index verwendet werden. Die pattern-Dateien brauchen an dieser Stelle nicht mehr gelesen zu werden. Die Cache-Datei wird so klein, dass auch keine eigene Variante für Counter mehr erforderlich ist.
Erst bei der Statistik-Anzeige werden die Daten aus den pattern-Dateien dazu gelesen. Möglicherweise kommt es dabei zu den gleichen Überlauf-Problemen. Dann ggf. Referer nur lesen, wenn auch für die Anzeige (Seitenherkünfte, Zugriffsquellen, Besucher) erforderlich. Heute werden immer alle Seiten in index.php aufbereitet. Dabei muß dann auch $searchwords_archive gebildet werden. Alle Referer mit search-Begriffen mit der Anzahl der Seitenaufruf multipliziert in diese Tabelle übernehmen. Analog bei $searchengines_archive verfahren. Alternativ Referer bereits beim Speichern aus track.php begrenzen oder intelligent kürzen. Hilft zumindest für Neuinstallationen und neue Daten. |
Titel: Referer-Länge für Pattern-Datei/DB begrenzen Beitrag von hr3 am 20.06.11 um 15:59:57
Zwei Zeilen in funk/func_pattern_matching.php einfügen und in $auf_stellen_begrenzen gewünschten Wert hinterlegen.
[code]... 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 ...[/code] Funktioniert mit Text-Dateien und Datenbank. Ändert keine bestehenden Daten, sondern nur die neu zu schreibenden. |
Titel: doppelte Schlüssel a. pattern_referer.dta reorgani Beitrag von hr3 am 21.06.11 um 13:50:22
Wenn diese Text-Datei (z.B. aus Platz- oder Performance-Gründen) reorganisiert werden soll, kann folgendes Programm dafür verwendet werden. Es korrigiert gleichzeitig die Verknüpfungen in den logdb(*)-Dateien.
Ggf. sind $path und $neu_durchnummerieren anzupassen. Das Programm kann beliebig oft aufgerufen werden und erstellt 4 Dateien mit der Kennzeichnung *_n.dta mit den neuen Daten. Durch Umbennen müssen die Original-Dateien durch diese ersetzt werden. Anschließend sind Cache- und Index neu zu erstellen. Code (]<?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):
Voraussetzung Datensicherung. Ergebnis prüfen. Ohne Gewähr. |
Titel: Re: Größe pattern_referer.dta / Abbruch bei Cache akt. Beitrag von Reimar am 03.08.11 um 15:50:06
Das zuletzt hier gepostete Script habe ich nun mal ausprobiert.
Von der Funktionalität her stimmt es soweit, allerdings habe ich da noch 2 kleine Anmerkungen, die man eventuell testen/diskutieren sollte: 1) Vielleicht lässt sich der Code noch optimieren, wenn man anstelle von "fgets" und "explode" einfach "fgetcsv" verwendet? 2) Bei einem Test mit nur der logdb_backup.dta wird bei einem lokalen Durchlauf auf meinem Rechner schon die Scriptlaufzeit von 30 Sekunden überschritten. Das kann natürlich schnell zu einem Problem führen bei Webhostern. Idee dazu was man besser machen könnte? |
Titel: Re: Größe pattern_referer.dta / Abbruch bei Cache akt. Beitrag von hr3 am 03.08.11 um 17:47:21
zu 1) gern, wenns was bringt
zu 2) kann ich erst einmal nicht nachvollziehen Habe gerade nochmal getestet: logdb_backup.dta 24.724,53 KB 576.180 Sätze pattern_referer.dta 11.497,24 KB 63.487 Sätze auf meinem lokalen XP Sempron3000+ 15Sek auf dem externen Linux Server 8Sek Hatte anscheinend auch keine Probleme: http://www.php-web-statistik.de/cgi-bin/yabb/YaBB.pl?num=1308571236 Mir ist schon klar, dass die Anforderungen an eine Standardlösung komplexer sind, als an meine Quick-and-dirty-Lösung. War auch erst einmal nur für die Experten vorgesehen, die zum Einen ein höheres Datenvolumen und zu Anderen das Wissen und die Möglichkeit haben solche Probleme zu umgehen und sollte ausloten, ob eine simple Lösung machbar ist und überhaupt Bedarf besteht. Ideen hab ich genug, aber mit dieser Problematik kennt Ihr Euch ja auch bestens aus. |
PHP-Web-Stat Support Forum » Powered by YaBB 2.5.2! YaBB Forum Software © 2000-2012. Alle Rechte vorbehalten. |