Webspace-Modul

McUles

B1G-Software-Kunde
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 ;)
 
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
 
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?
 
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.
 
Nach dem Upload zählst du einfach die Datei-Grösse hinzu. Beim Download ist das viel schwieriger, aber nicht unlösbar -> Logfile-Auswertung.
 
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.
 
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);
 }
 
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.
 
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.
 
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:
 
Webalizer ist auch nicht in PHP geschrieben.
Der o.g. C-Code ist bei mir jedenfalls rasend schnell :)
 
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:
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.".
 
Jo, so könnte man das natürlich schon machen, wenn mir jetzt noch jemand sagt, wie ich dann den User auslesen kann.
 
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:
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?
 
Nein, könnt Ihr nicht erwerben.
Aber runterladen. Gebe es frei, wenn es fertig ist.

Über Spenden via Paypal würde ich mich selbstverständlich freuen, dann sieht man wenigstens mal wieder, für was man hier Module postet.
paypal@freemail-online.de
 
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
 
Back
Top