Webspace-Modul

McUles

B1G-Software-Kunde
#1
Bin gerade dabei ein kleines Webspace-Modul zu schreiben. Weiß vielleicht jemand von euch, wie ich den Speicherplatz für die User begrenzen kann?

Würde mich freuen, wenn mir da jemand weiterhelfen könnte, kommt ja schließlich auch wieder allen zugute ;)
 

modig

B1G-Software-Kunde
#2
Huhu McUles,
da Quota ja bestimmt ausscheidet, könnte man vor einem Userdaten-Upload prüfen, wieviel der User belegt hat und dann entsprechend reagieren, also z.B. weiteren Upload mit einer Fehlermeldung verhindern.
Eine PHP-Klasse zum Größe ermitteln und/oder Dateien zählen findest Du z.B. HIER

Karsten
 

McUles

B1G-Software-Kunde
#3
Danke dir Karsten.

Das einzige was jetzt halt noch fehlen würde, währe eine möglichkeit den traffic zu messen.
Weiß da vielleicht auch noch jemand was dazu?
 

McUles

B1G-Software-Kunde
#5
Die webdisk is aber Dateibasierend, das Webspace Modul nicht. Das ist ordnerbasierend.
Wenn du trotzdem weißt, wo das steht, kannst du mir das gerne sagen, würde mir ne menge Arbeit sparen.
 

UNC

B1G-Software-Kunde
#6
Nach dem Upload zählst du einfach die Datei-Grösse hinzu. Beim Download ist das viel schwieriger, aber nicht unlösbar -> Logfile-Auswertung.
 
J

Jens Weber

#7
Den Traffic kannst Du so leicht nicht messen. Aber den eingehenden Transfer kannst Du messen, in dem du alle von den User hochgeladenen Dateien zusammenrechnest. Traffic der entsteht, wenn User nun die Seiten aufrufen, da wirds komplizierter.
 

patrick

Staff member
B1G-Software-Kunde
#8
Ich weiß wie's geht! :D
Aber in PHP wäre das wohl zu langsam.
Voraussetzung: Jeder User muss eine eigene Apache-Logfile haben (kann man ja in der Apache-Config so konfigurieren).

Quick & dirty:

Code:
char szBuff[1024];
unsigned long HTTPTraffic = 0;
FILE *fp = fopen("/pfad/zur/apache-logfile-des-jeweiligen-users", "r");
if(fp != NULL)
{
 while(fgets(szBuff, 1024, fp))
 	  if(strcmp(szBuff, "") != 0)
 	 	  HTTPTraffic += GetTrafficFromHTTPDLogLine(szBuff);
 fclose(fp); 
}
Code:
unsigned long GetTrafficFromHTTPDLogLine(char *line)
 {
 	unsigned long traffic = 0;
 	int field = 0;
	char c;
	bool aOpen = false, bOpen = false;
 	do
 	{
 		c = *line++;
		if(c == '"')
 			aOpen = !aOpen;
		if(c == '[')
			bOpen = true;
		if(c == ']')
			bOpen = false;

		if(!aOpen && !bOpen && c==' ')
			field++;

 		if(field == 6)
 		{
			if(*(line+1) == '-')
				return(0);
			sscanf(line, "%lu", &traffic);
			return(traffic);
		}
	} while(*line != 0);
	return(traffic);
 }
 

McUles

B1G-Software-Kunde
#9
Kann man das mit den Log-files auch dynamisch regeln? Kann ja schlecht für jeden user ne eigene direktive anlegen, das könnte ja in arbeit ausarten!

Das mit den Logfiles is aber ungenau, weil er die header nicht mit ausließt, die kann man nur pi mal daumen mitberechnen.

Sowas hab ich auch schonmal gemacht, weiß aber halt wie gesagt nicht, wie ich das dynamisch regeln kann, das er die logs für jeden benutzer automatisch anlegt.
 

patrick

Staff member
B1G-Software-Kunde
#10
Du kannst auch einfache alle User in ein großes Logfile packen und beim Parsen der Datei dann den Benutzer aus der jeweiligen Zeile auslesen.
 

UNC

B1G-Software-Kunde
#11
patrick said:
Ich weiß wie's geht! :D
Aber in PHP wäre das wohl zu langsam.
Logfiles hab ich auch schon angesprochen ;)
Zu langsam ist es nicht. Am besten man führt es einfach nur einmal in der Nacht durch und speichert dann das Ergebnis in der Datenbank. Glaub so ist das auch bei Confixx, Awstats, Webalizer etc. gelöst. :baby:
 

UNC

B1G-Software-Kunde
#13
patrick said:
Webalizer ist auch nicht in PHP geschrieben.
Ja, das weiss ich auch :p
Aber vom System her ist es auch so: Wird nur 1 mal pro Tag "gezählt"...
patrick said:
Der o.g. C-Code ist bei mir jedenfalls rasend schnell :)
Dann machs mal so:
PHP:
$i = 0;
while ($i <= 1000):
//ursprünglicher Code
$i++
endwhile;
;)
 
Last edited:

patrick

Staff member
B1G-Software-Kunde
#14
UNC said:
Aber vom System her ist es auch so: Wird nur 1 mal pro Tag "gezählt"...
Ich hab ja auch nicht gesagt, dass Logfiles auswerten generell schlecht oder zu langsam ist, sondern dass es langsam ist, wenn man es in PHP macht. Darauf hast du geschrieben: "Zu langsam ist es nicht.".
 

McUles

B1G-Software-Kunde
#16
Wenn mir jetzt noch jemand sagen würde, wie das mit dem traffic messen geht und wie ich die verzeichnisgröße ausmessen kann, dann is das modul auch schon soweit fertig.

Edit:
Verzeichnisgröße zählen geht schon.
 
Last edited:

Feke

B1G-Software-Kunde
#17
McUles said:
Wenn mir jetzt noch jemand sagen würde, wie das mit dem traffic messen geht und wie ich die verzeichnisgröße ausmessen kann, dann is das modul auch schon soweit fertig.

Edit:
Verzeichnisgröße zählen geht schon.
Wird man das Modul erwerben können?
 

easynetwork

B1G-Software-Kunde
#20
Hi,

evtl. noch ein Vorschlag für dein Modul:

Schön wäre es, wenn man Werbung (Zwangswerbung) dann auf den User-Sites einbinen könnte. Ob Banner oder Layer basierend ist da ja wurst (wie etwa im B1G Mail schon, nur speziell dafür einstellbar).

ansonsten freue ich mich schon riesig ;)

mfg easy
 
Top