Nagyméretű fájlok feltöltésének a korlátozása

Fórumok

Üdv Hup-os kollégák!

Nagyméretű (200MB - 2G) fájlok feltöltésére és letöltésének a kezelésére PHP (vagy Python) alapú programot kéne írnom (a feladat érdekesnek tűnik, de vannak sötét voltok a megvalósítás tekintetében).

A fájl fel és letöltés Hostonként eltérő sebességgel és méret korlátokkal történne.

Szerver OS: Debian Linux

Amit nem tudok, és ebben kérném a segítségeteket:
- Mivel tudom korlátozni szerver szinten a fel és letöltés sebességét?
- Esetleg van-e olyan Python vagy PHP eszköz amivel ezt megtehetem?
- Lehet-e hostonként változtatni ezeket a korlátokat?
- mi volna a megfelelő irány illetve eszköz a cél megvalósítására?
- Ip cím korlátozás is kelleni fog

Nem konkrét megvalósítást várok, csak ötletet pl.: program, beállítások, minek nézzek utána.A PHP beállításaival tisztában vagyok, de ide is várok tippeket.

Ha esetleg jártas valaki a témában megoszthatná a tapasztalatát.

Hozzászólások

A letöltés szerver oldalról egyszerű (Transfer-Encoding: chunked), a feltöltés se nagy kaland, csak figyelni kell rá, hogy senki se akarja a memóriába betölteni a teljes POST-ot...
A rendesebb framework-ök általában fájlként/streamként elérhetővé teszik a request body-t.

Pythonban tudok segíteni (Twisted, CherryPy (wsgi)).

Nem tudom milyen szervert használsz, az nginx nagyon kicsi és nagyon gyors, ott szerverenként állítható a kérés max. mérete és hogy mekkora kérés mérettől rakja fájlba, ill. melyik könyvtárba készítse a temp fájlokat.

Sőt, itt (is) használható fájl küldésre (letöltés) az X-Sendfile header (megadod melyik fájlt szolgáltassa a szerver, és az megteszi ezt, nem kell a Python/PHP-nak ezzel foglalkoznia).

GThomas

milyen érdekes, a PHP kávét se főz, és kapálni se tud...

tudod pl ellenőrizni a conntrack táblát. ha a target tcp/80 v tcp/443 és src nem a local ip, akkor bejövő kapcsolat. szerintem meg tudod nézni benne, h hány bájtot küldött a feladó. ha elérte a tetszőleges korlátot, akkor jöhet a tetszőleges akció is.
kis mázlival eleve van iptables target rá.

emellett van több apache module is rá (modultól függ, h mit paraméterezhetsz benne)