PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache 2 & Download begrenzen?



oafish
02.01.06, 14:56
Hi,
ich habe mehrere Webserver die verschiedene Dateien (pdf, doc, etc) anbieten. Manche von den Dateien sind recht groß. Deshalb möchte ich festlegen mit welcher Downloadrate diese max. gezogen werden dürfen. Ansonsten wird die komplette Bandbreite für diese eine Datei verwendet und andere User müssen ewig warten. Leider habe ich auf apache.org nichts gefunden. Ist sowas überhaupt mit dem apache 2 möglich?

Grüßle

oafish

bluedragon_ital
02.01.06, 15:12
Hallo,
bin zwar erst neu hier, aber ich denke ich kann dir helfen..
Eine Speedlimitbegrenzung in apache selbst habe ich zwar auch nicht gefunden, ich habe mir aber ein php-script für solche downloads geschrieben:

<?php
/*
Script um den Downloadspeed einer Datei zu reduzieren
$file = datei welche gedownloadet werden soll
$speed = geschw. in kb/s
Bsp: $speed = 8.5; // 8,5 kb/s download rate limit
Bsp: $file = "downloads/dieGroßeDatei.pdf" // diese datei wird mit dem angegebenen Speed runtergeladen

*/
function download_speed($file,$speed){
if(file_exists($file) && is_file($file)) {

header("Cache-control: private");
header("Content-Type: application/octet-stream");
header("Content-Length: ".filesize($file));
header("Content-Disposition: filename=$file" . "%20");

flush();

$fd = fopen($file, "r");
while(!feof($fd)) {
echo fread($fd, round($speed*1024));
flush();
sleep(1);
}
fclose ($fd);
}
?>
funktioniert wunderbar...
vill. machst du dir eine download.php die die Datei welche runtergeladen werden soll als Parameter erhält und dann diese Funktion aufruft...

Grüße aus Italien
bluedragon

Roger Wilco
02.01.06, 20:48
Ist sowas überhaupt mit dem apache 2 möglich?
Ja, du suchst mod_bw (http://www.ivn.cl/apache/).

fraggy2k
11.01.06, 22:13
wenn ich den mod in die httpd einbinde und mein apache restarte, denn crasht er und ich kann ihn auch nich starten... kann bei der compilierung auch kein fehler entdecken, was könnte das sein?

schmidtl_dd
11.01.06, 22:23
wie crashet er? (fehlermeldung? logs?)

fraggy2k
12.01.06, 13:14
httpd: Syntax error on line 501 of /opt/lampp/etc/httpd.conf: Cannot load /usr/lib/apache2/modules/bw_mod-0.6.so into server: /usr/lib/apache2/modules/bw_mod-0.6.so: undefined symbol: apr_atomic_add

noch nen fehler nebenbei, system zeigt mir immer
hub 3-0:1.0: over-current change on port 1
an....

Roger Wilco
12.01.06, 14:40
httpd: Syntax error on line 501 of /opt/lampp/etc/httpd.conf: Cannot load /usr/lib/apache2/modules/bw_mod-0.6.so into server: /usr/lib/apache2/modules/bw_mod-0.6.so: undefined symbol: apr_atomic_add
Stimmt die APXS/APR-Version mit deiner installierten Apache-Version überein? Sieht nicht so aus.


noch nen fehler nebenbei, system zeigt mir immer
hub 3-0:1.0: over-current change on port 1
an....
Zuviel Spannung auf einem deiner USB-Ports.

fraggy2k
12.01.06, 14:44
libapr0 hab ich auf 2.0.54-5 und apache version von xampp is 2.2 ...

am USB port hängt nichts drane, gibt es nen trick und das zu beheben?

Roger Wilco
12.01.06, 14:51
libapr0 hab ich auf 2.0.54-5 und apache version von xampp is 2.2 ...
Da haben wir doch das Problem...:rolleyes:


am USB port hängt nichts drane, gibt es nen trick und das zu beheben?
Hm, schonmal dagegen getreten? :D
Sorry, keine Ahnung, vielleicht hab ich mich bei der Meldung auch vertan ;)
Aber du machst dazu besser einen neuen Thread im richtigen Unterforum auf.

fraggy2k
12.01.06, 15:06
hmm da es ja noch keine arp 2.2 gibt soll ich denn apache 2.0 drauf machen?

fraggy2k
12.01.06, 18:00
so apache läuft nu auf 2.0.5.5 aber er sagt jetzt "undefined symbol: apr_atomic_init"

drachoner
14.08.06, 12:53
Hallo zusammen. Ich habe beim Kompilieren des Moduls Probleme.

Ich verwende den Apache2 auf Debian 3.1. Wenn ich das Modul mit apxs kompilieren möchte, kommt "apxs:Break: Command failed with rc=1" als Fehlermeldung.

Bin für jeden Rat dankbar.

Danke und Gruß aus Köln

Tomek
14.08.06, 12:56
Installiere das Paket apache2-prefork-dev und benutze /usr/bin/apxs2 anstatt /usr/bin/apxs.

drachoner
14.08.06, 13:22
Danke für die prompte Hilfe. Die Kompilierung schien erfolgreich verlaufen zu sein und werde das jetzt mal ausprobieren ob es auch in der tatsächlichen Umsetzung klappt.

Darf ich fragen, was dieses Paket jetzt bewirkt hat? Es ist zwar schön das mein Problem jetzt behoben ist, aber ich würde doch gerne verstehen, _was_ bzw. _wieso_ ich da soeben gemacht habe.

mfg

Tomek
14.08.06, 13:34
Das ist eben das Entwicklerpaket für Apache2.

drachoner
14.08.06, 14:23
muss ich das neue modul auch mit a2enmod dann aktivieren? a2enmod bw klappt z.b. nicht.

Tomek
14.08.06, 14:41
Je nachdem wohin du das neue Modul installiert hast, kannst du das Modul manuell einbinden.

drachoner
14.08.06, 15:01
Ja, habe das jetzt gerade manuell eingebunden. Es gab zwar einen Eintrag in der httpd.conf, aber ich habe es trotzdem in eine eigene Datei reingeschrieben und mit a2enmod aktiviert.

lesen bildet und man sollte es immer wieder machen :-)

Mal gucken ob es jetzt funktioniert.

drachoner
14.08.06, 15:57
Also das Einbinden scheint erfolgreich zu sein. Leider wirkt sich der Eintrag nicht auf das Modul aus. Würde mich über Hilfe freuen. Aus diesem Grund habe ich unten einen Ausschnitt aus meiner Konfigurationsdatei eingefügt.

Dabei handelt es sich um einen WebDAV-Server der an einer 4MBit Leitung hängt. Ich möchte dem Apachen sagen, das er dafür allerhöchstens 1 MBit benutzen darf, und das die restl. 3Mbit für andere Zwecke verbraten werden können.


<VirtualHost *:443>
ServerName WebDAV
ServerAlias 123.456.789.1
SSLEngine On
SSLCertificateFile /etc/ssl/certs/host-cert.pem
SSLCertificatekeyfile /etc/ssl/private/host-privkey.pem
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown

DavLockDB /srv/webdav/davlock/davlock

BandwidthModule On
ForceBandWidthModule On
Bandwidth localhost 1024
MinBandwidth localhost 1024
</VirtualHost>


Leider lade ich die Dateien immer noch mit meinem MaxUpload da hoch :( Hat jemand eine Idee wie ich das Problem lösen könnte?

Der rote Teil bezieht sich jetzt auf die BW-Modul Geschichte. Ich habe bewusst kleine Werte genommen, damit ich auch wirklich sicher sein kann, dass es funktioniert.

Flex6
14.08.06, 19:27
es gibt das modul mod_limitipcon und mod_bw (hatte ja schon jemand geschrieben ) für Apache2, ich kenn nur limitipcon und damit kann man jeden Host seine Bandbreite zuweisen oder eingrenzen, der Entwickler hat auch eine Seite im Netz.

mod_cband gibts noch für Bandbreitenbegrenzung

drachoner
15.08.06, 09:39
Danke, ich werde mir die Module mal zu gemüte führen.