Traffic ermitteln?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Traffic ermitteln?

Beitrag von mgutt »

Wenn ich mich bei meinem Hoster einlogge erkenne ich dort die Trafficwerte und entsprechenden Limits bzw. Überhänge.

Der Überhang wird mir Monat für Monat berechnet.

Jetzt möchte ich gerne bei Trafficzahl X GB die Downloadfunktion in meinem Forum sperren.

Wie könnte man den Trafficwert ermitteln? Der Hoster verweigert leider den Zugriff auf die Trafficzahlen per Script, aber er selber liest sie an Hand der Logdateien aus, wie er mir mitteilte.

Wie kann ich 1. eine ".gz" komprimierte Datei Tag für Tag entpacken, dann diese per PHP auslesen und die entsprechenden Werte (welche überhaupt) addieren?

Ein kleiner Auszug aus der Logfile:
217.xxx.xxx.xxx - - [04/Feb/2006:20:56:20 +0100] "GET /templates/BadMax/images/folder_sticky.gif HTTP/1.1" 304 - "http://www.maxrev.de/sidforums14-xxxxxx ... xxxxxx.htm" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; msneco 5.0)"
217.xxx.xxx.xxx - - [04/Feb/2006:20:56:20 +0100] "GET /templates/BadMax/images/folder_own.gif HTTP/1.1" 304 - "http://www.maxrev.de/sidforums14-xxxxxx ... xxxxxx.htm" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; msneco 5.0)"
217.xxx.xxx.xxx - - [04/Feb/2006:20:56:20 +0100] "GET /advertising/motyre_banner.jpg HTTP/1.1" 304 - "http://www.maxrev.de/sidforums14-xxxxxx ... xxxxxx.htm" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; msneco 5.0)"
84.xxx.xxx.xxx - - [04/Feb/2006:20:56:23 +0100] "GET /files/052561_718.jpg HTTP/1.1" 200 29685 "http://www.maxrev.de/ftopic3461-60.htm" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
EDIT:

Ok gz bekommt man z.B. so auf (codeschnippsel):

Code: Alles auswählen

// getting content of the compressed file
   $zp = gzopen("../upload/".$zipname, "r" );
   $gzfilesize = filesize("../upload/".$zipname);
   $data = fread ( $zp, $gzfilesize);
   gzclose( $zp );
   
   // writing uncompressed file
   $fp = fopen('../upload/test.jpg', "w" );
   fwrite( $fp, $data );
   fclose( $fp );
Zuletzt geändert von mgutt am 06.02.2006 11:32, insgesamt 1-mal geändert.
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
mr.no-name
Mitglied
Beiträge: 1883
Registriert: 20.10.2003 12:07
Wohnort: Hannover

Beitrag von mr.no-name »

Wenn du Zugriff auf die Logfiles hast, hilft dir vielleicht Webalizer weiter
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Zugriff habe ich. Klar. Du hast recht. Ist ja einfacher.

Das heißt ich lese die index.html vom Webalizer aus.

Wie komme ich auf den Wert der x-ten Spalte und x-ten Zeile?

Für Februar ist das z.B.:
Feb 2006 429960 265289 110578 6854 19614 92796598 34270 552890 1326446 2149804
Der dick geschriebene Wert ist mein Feind ;)

Da die index.html ja immer größer wird (Monat für Monat), weiß ich nicht wie ich das dynamisch auslesen lassen könnte.

Also den kompletten Inhalt auslesen ist unproblematisch. Das ginge so:

Code: Alles auswählen

$fp = fopen('usage/index.html','r');
$fpinhalt = fread($fp, filesize('usage/index.html'));
fclose($fp);
Der Zielinhalt sieht ca. so aus:
<TR><TH ALIGN=left ROWSPAN=2 BGCOLOR="#C0C0C0"><FONT SIZE="-1">Monat</FONT></TH>
<TH ALIGN=center COLSPAN=4 BGCOLOR="#C0C0C0"><FONT SIZE="-1">Tagesdurchschnitt</FONT></TH>
<TH ALIGN=center COLSPAN=6 BGCOLOR="#C0C0C0"><FONT SIZE="-1">Monats-Summe</FONT></TH></TR>
<TR><TH ALIGN=center BGCOLOR="#008040"><FONT SIZE="-1">Anfragen</FONT></TH>
<TH ALIGN=center BGCOLOR="#0080FF"><FONT SIZE="-1">Dateien</FONT></TH>
<TH ALIGN=center BGCOLOR="#00E0FF"><FONT SIZE="-1">Seiten</FONT></TH>
<TH ALIGN=center BGCOLOR="#FFFF00"><FONT SIZE="-1">Besuche</FONT></TH>
<TH ALIGN=center BGCOLOR="#FF8000"><FONT SIZE="-1">Rechner</FONT></TH>
<TH ALIGN=center BGCOLOR="#FF0000"><FONT SIZE="-1">kb</FONT></TH>
<TH ALIGN=center BGCOLOR="#FFFF00"><FONT SIZE="-1">Besuche</FONT></TH>
<TH ALIGN=center BGCOLOR="#00E0FF"><FONT SIZE="-1">Seiten</FONT></TH>
<TH ALIGN=center BGCOLOR="#0080FF"><FONT SIZE="-1">Dateien</FONT></TH>
<TH ALIGN=center BGCOLOR="#008040"><FONT SIZE="-1">Anfragen</FONT></TH></TR>
<TR><TH HEIGHT=4></TH></TR>
<TR><TD NOWRAP><A HREF="usage_200602.html"><FONT SIZE="-1">Feb 2006</FONT></A></TD>
<TD ALIGN=right><FONT SIZE="-1">429960</FONT></TD>
<TD ALIGN=right><FONT SIZE="-1">265289</FONT></TD>
<TD ALIGN=right><FONT SIZE="-1">110578</FONT></TD>
<TD ALIGN=right><FONT SIZE="-1">6854</FONT></TD>
<TD ALIGN=right><FONT SIZE="-1">19614</FONT></TD>
<TD ALIGN=right><FONT SIZE="-1">92796598</FONT></TD>
<TD ALIGN=right><FONT SIZE="-1">34270</FONT></TD>
<TD ALIGN=right><FONT SIZE="-1">552890</FONT></TD>
<TD ALIGN=right><FONT SIZE="-1">1326446</FONT></TD>
<TD ALIGN=right><FONT SIZE="-1">2149804</FONT></TD></TR>
Und die fett geschriebene Zahl brauche ich :-?
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Weiter :D

Code: Alles auswählen

 	$_kbarray = file('usage/index.html');
	$kbwert = rtrim($_kbarray[56]);
	echo($kbwert);
Enhält:

Code: Alles auswählen

<TD ALIGN=right><FONT SIZE="-1">92796598</FONT></TD>
Zuletzt geändert von mgutt am 06.02.2006 12:47, insgesamt 1-mal geändert.
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
mr.no-name
Mitglied
Beiträge: 1883
Registriert: 20.10.2003 12:07
Wohnort: Hannover

Beitrag von mr.no-name »

So hatte ich das garnicht gemeint ;)
Ich dachte eher daran, dass du evtl. die Berechnungsmethode vom Webalizer für deine Zwecke nutzen könntest.

Oder eben, wie du meintest, die Ergebnisseite auslesen - aber in der Hinsicht bin ich überfragt...
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

So habe ich es gelöst:

Code: Alles auswählen

$_kbarray = file('usage/index.html');
$kbwert = rtrim($_kbarray[56]);
$kbwert = str_replace('<TD ALIGN=right><FONT SIZE="-1">', '', $kbwert);
$kbwert = str_replace('</FONT></TD>', '', $kbwert);

if ($kbwert >  471859200)
{
Da die 57. Zeile (oder 56. ab 0 gesehen) immer die gleiche bleiben müsste, also damit die aktuelle, sollte es so gehen.

Nach dem der Wert die 471859200 KBytes also 450 GB (500 GB sind bei mir frei) überschritten hat, dann geht die Seite nicht mehr (ist eine Downloadseite) und eine Meldung wird ausgegeben.

Muss ich den Wert noch aus Sicherheitsgründen oder so in einen Zahlenwert umwandeln? Mir fällt gerade nicht ein, wie das hieß :roll:
Zuletzt geändert von mgutt am 06.02.2006 13:14, insgesamt 1-mal geändert.
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Naja so habe ich mal gemacht:

Code: Alles auswählen

$_kbarray = file('usage/index.html');
$kbwert = trim($_kbarray[56]);
$kbwert = str_replace('<TD ALIGN=right><FONT SIZE="-1">', '', $kbwert);
$kbwert = str_replace('</FONT></TD>', '', $kbwert);
settype($kbwert, "integer");

if ($kbwert > 471859200)
{
Vielleicht hat jemand noch eine andere Idee.
Zuletzt geändert von mgutt am 06.02.2006 13:18, insgesamt 1-mal geändert.
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Benutzeravatar
Jan500
Ehemaliges Teammitglied
Beiträge: 4199
Registriert: 01.03.2003 21:32
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Jan500 »

bitte edit funktion nutzen :roll:

[kb=knigge#bumping]Topic-Bumping[/kb]

Jan
Zuletzt geändert von Jan500 am 06.02.2006 18:36, insgesamt 1-mal geändert.
"Life begins at 40 Knots...!" :D
kein (kostenlosen) Support per pn, mail, icq usw. | Kostenlosen Support gibt es hier im Forum!
Wissler
Mitglied
Beiträge: 227
Registriert: 27.02.2005 14:24

Beitrag von Wissler »

Ist das mit dem Download ein Mod?
Wenn ja, welcher ist es?
Kann ich da verhindern, dass User, die nicht eingeloggt sind,
etwas herunterladen können?

Danke im Voraus und Gruß
Wissler
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Wegen meinem Code:

Mein Codeschnipsel funktioniert auf jeder Seite, wenn man den Webalizer installiert hat. Dann sollte man aber den Vergleichswert anpassen, wenn man z.B. weniger freien Traffic zur Verfügung hat.

Man könnte z.B. eine simple Meldung ausgeben wie "Sorry, wir haben diesen Monat keinen Traffic mehr zur Verfügung, bitte probiere es ab dem 1. des nächsten Monats wieder" oder man bindet einen anderen Code ein.

Ich habe z.B. danach eine Gruppenprüfung enthalten. Soll heißen, wenn User in einer bestimmten Gruppe sind, dann dürfen sie die Seite dennoch öffnen. Wer in dieser Gruppe ist, bestimme wiederrum ich.


Wegen dem eingeloggt sein:

Das ist noch einfacher ;)

Damit Leute eingeloggt sein müssen, musst Du auf dieser von Dir genannten Seite diesen Code nutzen:

Code: Alles auswählen

if ( !$userdata['session_logged_in'] )
{
   redirect(append_sid("login.$phpEx?redirect=namedeinerseite.$phpEx", true));
}
"namedeinerseite" ersetzt Du entsprechend ;)
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Antworten

Zurück zu „Coding & Technik“