Zadejte hledaný výraz...

Nastavení rychlosti stahování

Mirek
verified
rating uzivatele
22. 5. 2008 17:18:59
Nevím si rady jak nastavit různé typy rychlosti stahování. Přesněji řečeno - mám web stránku, kde bych chtěl nastavit pomalejší stahování souborů pro neplatící členy (např. 20KB/sec) a pokud by někdo chtěl vyšší rychlost (500KB/sec), tak by si připlatil pár korun, ale problém je, že nevím jak to udělat :-(
Nemáte s tím někdo zkušenosti?
Díky za radu Mirek
22. 5. 2008 17:18:59
https://webtrh.cz/diskuse/nastaveni-rychlosti-stahovani#reply73609
Milan Kryl
verified
rating uzivatele
(26 hodnocení)
22. 5. 2008 19:13:36
Budes si muset naprogramovat nejake zpomalovadlo. Nebo mit vlastni server a pridat si do weboveho serveru modul, ktery bude delat shaping.
22. 5. 2008 19:13:36
https://webtrh.cz/diskuse/nastaveni-rychlosti-stahovani#reply73608
Jakub Stacho
verified
rating uzivatele
(20 hodnocení)
22. 5. 2008 19:55:15
Obávám se, že vlastní server je nezbytný (nebo alespoň přístup k nastavením, které nebývají na běžném sdíleném hostingu k dispozici).
Zpomalovadlo čistě na bázi PHP, které by vydávalo soubor „po kouskách“, by bylo náročné na systémové prostředky. EDIT: Kecám, llook má pravdu.
Zkus se kouknout např. na mod_cband.
22. 5. 2008 19:55:15
https://webtrh.cz/diskuse/nastaveni-rychlosti-stahovani#reply73607
Fuck You
verified
rating uzivatele
(1 hodnocení)
22. 5. 2008 20:24:45
Pokud by se čas stažení souboru vyšší rychlostí vešel do časového limitu pro PHP, pak by se dalo udělat to, že by skript vždycky poslal kousek, chvíli počkal, pak zase kousek a tak pořád dál. Nějak takhle:
(Čekání ve funkci sleep() se do limitu nepočítá.)
Časový limit bývá nejčastěji 30 sekund a pokud je zapnutý safe_mode, tak ho ani nemůžeš změnit. Pokud jsi na serveru se safe_mode=off, pak použij set_time_limit(). Další časový limit může mít nastavený samotný Apache.
Skript si alokuje blbých pár desítek kilobajtů a většinu času tráví ve funkci sleep. To mi přijde přijatelné, pokud na tom nechceš stavět opravdový download server. A pokud jo, tak ti větší starosti než výkon bude dělat traffic...
22. 5. 2008 20:24:45
https://webtrh.cz/diskuse/nastaveni-rychlosti-stahovani#reply73606
Veros
verified
rating uzivatele
(1 hodnocení)
22. 5. 2008 23:05:57
Napsal llook;63356
Pokud by se čas stažení souboru vyšší rychlostí vešel do časového limitu pro PHP, pak by se dalo udělat to, že by skript vždycky poslal kousek, chvíli počkal,
...
Skript si alokuje blbých pár desítek kilobajtů a většinu času tráví ve funkci sleep. To mi přijde přijatelné, pokud na tom nechceš stavět opravdový download server. A pokud jo, tak ti větší starosti než výkon bude dělat traffic...
Největší problém tohohle skriptu je sežraná paměť (PHP je žrout, ne?). Kousek ke kousku a 100 stahovačů ti zafláká pamět a dojde k výprasku (v angličtině se tomu říká trashing) - situace, kdy se přehazují bloky mezi swapem a RAM.
Jako jednoduché řešení mne napadají dva webservery (klidně i na jedné IP a dvou portech) - pomalý, který bude pro neplatící zákazníky a rychlý, který bude vyžadovat ověření a bude pro ty platící. Jako software je potřeba použít něco hodně lehkého...
--V
22. 5. 2008 23:05:57
https://webtrh.cz/diskuse/nastaveni-rychlosti-stahovani#reply73605
Fuck You
verified
rating uzivatele
(1 hodnocení)
23. 5. 2008 17:02:36
Tak jsem si to vyzkoušel a tenhle skript alokuje přesně 256 KB (a ten řádek s $data = null je úplně zbytečný, nemá podle memory_get_usage na nic vliv). Takže 100 simultánních stahování by mělo zabrat 25 MB. Plus něco málo spolkne režie Apache.
Jestli to je ještě přijatelné nebo ne, záleží na situaci.
23. 5. 2008 17:02:36
https://webtrh.cz/diskuse/nastaveni-rychlosti-stahovani#reply73604
Jakub Stacho
verified
rating uzivatele
(20 hodnocení)
23. 5. 2008 17:35:00
Já bych se spíš bál time_limitu 30s. Jestli to jedno „odplivnutí“ (20kB) bude trvat 10ms, tak se stihne poslat max 60 MB a ještě se na konec souboru přidá chybová hláška...
(btw: Aby to někoho nezmátlo jako mně: ve Windows se sleep() do time_limitu započítává, na Linuxu opravdu ne)
23. 5. 2008 17:35:00
https://webtrh.cz/diskuse/nastaveni-rychlosti-stahovani#reply73603
Mirek
verified
rating uzivatele
23. 5. 2008 20:38:27
Děkuji všem za odpovědi. vyzkouším :-) Jinak posílal jsem ještě na zahraniční fóra, tak mi taky něco odpověděli, ale Češi jsou aktivnější :-)))
http://forums.devshed.com/php-development-5/download-speed-532127.html
http://www.programmingtalk.com/showthread.php?t=45251
Ještě jednou díky!
Mirek
23. 5. 2008 20:38:27
https://webtrh.cz/diskuse/nastaveni-rychlosti-stahovani#reply73602
Veros
verified
rating uzivatele
(1 hodnocení)
24. 5. 2008 22:04:56
Napsal llook;63640
Tak jsem si to vyzkoušel a tenhle skript alokuje přesně 256 KB (a ten řádek s $data = null je úplně zbytečný, nemá podle memory_get_usage na nic vliv). Takže 100 simultánních stahování by mělo zabrat 25 MB. Plus něco málo spolkne režie Apache.
Můžu se zeptat těch 256kB je vráceno interní funkcí PHP (a tedy hlásí, kolik paměti požádal skript od PHP), nebo to je zjištěno z OS jako velikost paměti, kterou si alokoval Apache+PHP+skript?
První varianta je samozřejmě špatně, na tu druhou 256kB přijde jako moc malá čísla (ale pokud na tom budeš trvat, tak ti budu věřit. PHP neznám).
Pro zajímavost: přikládám screenshoty před a po začátku stahování 50 klientů - je vidět, že rozdíl není těch 25/2=13 MB - ale zhruba 160MB :-) - počítáno jako rozdíl obsazené paměti a swapu.
Je to testovací stroj, kde je PHP jako CGI. Obvykle se PHP spouští jako modul, ale nepředpokládám, že to s výsledky nějak výrazně zamává.
Už jsme ale dost od původního tématu.
--V
24. 5. 2008 22:04:56
https://webtrh.cz/diskuse/nastaveni-rychlosti-stahovani#reply73601
Pro odpověď se přihlašte.
Přihlásit