Skocz do zawartości
Zaloguj się, aby obserwować  
Gość Pokuć

Ograniczenie Szybkości Transferu

Polecane posty

Gość Pokuć

Witam

 

Nie bardzo wiem gdzie ten temat dać dlatego w piaskownicy... Otóż szukam możliwości ograniczenia szybkości transferu dla danego katalogu. Załóżmy że mam katalog download i w nim pliki. I mimo ze serwer jest szybki to pobieranie przez użytkowników by było dosć powolne - powiedzmy 10 - 15 kb/s. Ale tylko dla tego jednego katalogu. Szukałem na innych forach ale nic :) Jeżeli jest to niemożliwe to spytam jeszcze czy jest możliwość zeby do tego katalogu miały dostęp maksymalnie dwie osoby jednocześnie i które mogłby pobierać po jednym pliku maksymalnie. Osoby które chciałyby pobrać ale musiałyby czekać w kolejce dostawałyby komunikat ze muszą spróbować póżniej. Coś jak jest na Download komputerswiat.pl czy było kiedyś na idg.pl Zatem czy istnieje rozwiazanie na moje pytania ? Dziękuje za odpowiedź.

 

Pozdrawiam

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zasadniczo w świecie komputerów niewiele jest rzeczy niemożliwych. Znaczna ich część jest tylko po prostu kosztowna (w różnych tego słowa znaczeniach).

Dałeś trochę mało danych żeby udzielić Ci odpowiedzi. Chcesz to skonfigurować na swoim własnym serwerze czy na jakimś hostingu dzielonym. W przypadku tego pierwszego nie jest to aż tak drudne do osiągniecia, w przypadku tego drugiego sam tego nie zrobisz na pewno (co najwyżej admin mógłby to zrobić dla Ciebie).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jednym z rozwiązań jest więc użycie Apache + mod_cband (nasz Polski, świetny wyrób http://cband.linux.pl/). Co prawda nie można limitować "katalogów" ale można spokojnie virtualhosty. Przy odpowiedniej konfiguracji można jednak uzyskać takie same efekty.

 

Samo limitowanie katalogów z poziomu Apache jest również możliwe ale dość kłopotliwe (tzn dla modułów Apache). Oczywiście można podpiąć moduł podobnie jako filtr z zasięgiem tylko dla danej dyrektywy Directory albo Location ale nie znam żadnego gotowego, który coś takiego implementuje.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Pokuć

Serwer jaki mam to nazwa.pl :) Pisałem ale Administrator odpowiedział że nie jest to możliwe. Czytałem tez że za to jest .htaccess odpowiedzialny ale co i jak to juz pomocy nie uzyskałem. Zaznaczyć muszę od razu ze nie jestem jakimś specem od tych rzeczy i wiele rzeczy sie musze jeszcze nauczyć :) Czy mam podac jeszcze jakieś informacje dotyczące konfiguracji serwera zeby ułatwić wam rozwiązanie mojego problemu ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie musisz. Myślę, że nie da się rozwiązać Twojego problemu. Pliki .htaccess służą do konfigurowania zachowania serwera w danych lokalizacjach. Jeśli więc serwer na home.pl obsługiwał by limitowanie prędkości wysyłania danych dla poszczególnych katalogów to mógłbyś to ustawić właśnie w tym pliku. Jestem jednak przekonany, że tego nie obsługują (zresztą sam wspomniałeś, że tak Ci napisali). Jeśli więc chcesz mieć taką funkcjonalność to prawdopodobnie musisz sam skonfigurować sobie serwer WWW (albo ktoś inny musi to zrobić za Ciebie) ale do tego potrzebujesz albo jakis VPS albo serwer dedykowany. Na pewno nie hosting dzielony.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Pokuć

A nie da sie zrobić tego za pomocą skryptu lub kilku skryptów PHP i ewentualnie MySQl ?? Działałoby na tej samej zasadzie co blokowanie dostępu do płatnych witryn :) Jeżeli rzeczywiście takiej możliwości nie ma (Za skrypty i rozwiazanie jestem gotów zapłacić) to jakie serwery VPS czy Dedykowane polecacie ? Dużo czytałem o Insane.pl :) Serwis który prowadze generuje dość duży ruch no i posiada spory download. Czy na Insane.pl byłoby to możliwe ? Mówie o Serwerze Biznes i Static :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Niech zgadnę, kupiłeś zwykły hosting a oczekujsze od niego funkcjonalności dedyka? Człowieku o czym ty piszesz. Rower nie nadaje się na GP żużla.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Pokuć

Rozumiem twoje zdziwienie ale serwis który stworzyłem z grupą przyjaciół okazał sie niezwykle popularny i gdy kupowaliśmy serwer nazwa.pl to przez pół roku (Promocja za 50 PLN) mieliśmy raptem 169 GB Transferu z 600. Teraz w czerwcu mieliśmy 100 GB i w lipcu tez 100 GB transferu. Wiedzieliśmy ze serwis rośnie w siłe ale ze nie aż tak szybko, dlatego kupiliśmy normalny serwer. Teraz bede musiał dokładnie przestudiować informacje o dedykach i taki będzie trzeba zakupić. I pytanie które zadałem w poprzednim poście: Czy serwery na insane.pl (Biznes i Static) mają status/ możliwosci serwera dedykowanego ? I jak rozumiem mój pierwotny problem czyli ograniczanie szybkości transferu dla poszczególnych folderów jest możliwe do zrobienia w serwerze dedykowanym (Folder jako konto z ograniczeniem) ??

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bardzo prosto ograniczyć szybkość ściąganego pliku i ilość jednoczesnych połączeń nie mając możliwości modyfikowania konfiguracji serwera. Można to zrobić za pomocą PHP i .htaccess'a - kilka(naście) linijek kodu i gotowe.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Bardzo prosto ograniczyć szybkość ściąganego pliku i ilość jednoczesnych połączeń nie mając możliwości modyfikowania konfiguracji serwera. Można to zrobić za pomocą PHP i .htaccess'a - kilka(naście) linijek kodu i gotowe.

 

No tak, w sumie myśląc o sciąganiu plików z katalogu od razu pomyślałem o zastosowaniach bardziej niskopoziomowych czyli w serwerze WWW.

 

Niebardzo jednak rozumiem jak chcesz PHP i .htaccess tutaj połączyć. Możesz napisać więcej szczegółów bo mnie zaciekawiłeś? Da się z poziomu PHP ograniczyć prędkość wysyłanych danych, to na pewno. Można tez ograniczyć ilość jednoczesnych ściągnięć ale po co wted .htaccess?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Pokuć

Skoro da sie za pomoca PHP to powiedz jak. Od razu zaznaczam ze nie jestem w PHP dobry i prosiłbym o nieodsyłanie mnie do kursów bo kursy mam i czytam ale jestem w początkach :) Byłbym wdzięczny jakbyś napisał co i jak trzeba zrobić.

 

Pozdrawiam

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

<?php
$file = $_GET['file']; // Plik, ktory wyslemy do uzytkownika
$speed = 32; // 32 kb/s limit sciagania danych

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);

  flush();

  $fp = fopen($file, 'r');

  while (!feof($fp))
  {
  echo fread($fp, round($speed*1024));

  flush();
  sleep(1);
  }

  fclose ($fp);
}
?>

 

zaznaczam, że kod nie jest mój ale nie mogę w tej chwili odnaleźć źródła (chyba http://www.webhostingtalk.com/showthread.php?t=300222)

 

kod .htaccess aby każdy plik przechodził przez ten plik php jest jeszcze potrzebny

o ile pamiętam np. dla zipów miałem ustawione tak:

 

RewriteEngine On
RewriteRule ^(.*).zip get.php?file=$1.zip

 

pozdrawiam, sq-

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Pokuć

Czy coś trzeba zmieniać w $file = $_GET['file']; // Plik, ktory wyslemy do uzytkownika czy wrzucam do folderu na serwer jako index.php i plik .htaccess i tam pliki i bedzie sie wolno ściągało ? Jak mam dwa rozszerzenia .rar i .cdp (Plik dodatki do gry) to htaccess bedzie wyglądał tak :

 

RewriteEngine On

RewriteRule ^(.*).zip get.php?file=$1.zip

RewriteRule ^(.*).cdp get.php?file=$1.cdp

 

Proszę o nakierowanie mnie. Z góry dziękuje za odpowiedź :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

nic nie zmieniasz w pliku .php nazywasz go get.php (tak jak w .htaccess)

a w .htaccess to tak jak napisales.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Pokuć

Dzięki wielkie !!! Pomogło :) Teraz mogę zrobić download taki że mi nie zadźga serwera choć i tak w styczniu zmiana :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dzięki wielkie !!! Pomogło :) Teraz mogę zrobić download taki że mi nie zadźga serwera choć i tak w styczniu zmiana :)

 

Uważaj tylko na timeouty. PHP może ustawiony jakiś limit długości wykonywania skryptu. Tak więc jeśli Twój provider ma ustawiony taki limit to możesz mieć problemy z wysłaniem dużych plików tą metodą (skrypt wykonuje się tak długo, jak długo pobierany jest plik). Domyślnie wartość ta jest ustawiona na 30 sekund ale oczywiście u Twojego prowidera może nie być tak źle.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Pokuć

Pliki mają max 5 - 6 MB, mam nadzieje ze ten skrypt nie powoduje jakiegoś wielkiego obciażenia serwera...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Pliki mają max 5 - 6 MB, mam nadzieje ze ten skrypt nie powoduje jakiegoś wielkiego obciażenia serwera...

Obciążenia nie powoduje bo większość czasu czeka aż upłynie pewien czas po którym wyśle następną porcję danych (efektywnie obniżając średnią prędkość pobierania). Jeśli limit czasu jaki skrypt PHP może być uruchomiony jest ustawiony na 60 sekund to możesz plik 5MB puszczać z minimalną prędkością wynoszącą:

 

5120KB/60sekund = 85KB/s

 

Jak więc widzisz prędkość jest dość duża (3/4 MBit) więc jeśli limit nie jest ustawiony dość wysoko to mogą być problemy jeślibyś chciał na prawdę mocno ograniczać tą prędkość (ale myśle, że jest ustawiony wyżej niż 60 sekund).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Hmm.. w sumie to właśnie sprawdziłem i do tego limitu czasu wykonywania skryptu nie wlicza sie operacji wysyłania danych (ani nawet syscalli) więc zasadniczo ten skrypt prawie nie wykonuje operacji, które się wliczają a więc w ten sposób na pewno sie nie timeoutuje (co oczywiście nie wyklucza, że gdzieś indziej nastąpi timeout).

 

No i ważna uwaga - nie powinieneś używać tego skryptu w takiej formie w jakiej jest przedstawiony. To tylko poglądowy skrypt, który nie jest zbyt bezpieczny. Pamiętaj o tym.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Co do nazwy to wpadlo mi ostatnio w rece takie oto opracowanie limitow:

 

Ilość plików 100000.

Maksymalny czas wykonywania skryptu: 30 sekund

Maksymalny czas bezczynności skryptu: 120 sekund

Maksymalna ilość zajętej pamięci: 20MB

maksymalny rozmiar bazy: 500MB

minimalny rozmiar bazy: 10MB

max_allowed_packet = 1MB (maksymalny rozmiar pakietu, limituje rozmiar blobów)

max_user_connections = 40 (maksymalna ilość jednoczesnych połączeń użytkownika z bazą danych)

interactive_timeout = 600 (timeout dla połączen interaktywnych)

delayed_insert_timeout = 60 (timeout dla opóźnionych zapytań INSERT)

Limit ilości połączeń do baz danych na godzinę - 10000

 

Nie wiem jednak jak wiarygodne jest jego pochodzenie (ktos je umiescil na jakims forum).

 

@pleple - Dotyczy to nazwy czy ogolnie? Jesli ogolnie to mysle, ze nie mozna generalizowac w zadna strone. Konfiguracje sa rozne. Jesli nazwy to cenna obserwacja.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Pokuć

Znaczy że skrypt powinienem zabezpieczyć ? Mi chodzi tylko o to żeby pliki wolniej się pobierały i żeby było bezpiecznie i bez problemów ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×