![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 16.08.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam, ostatnio zostałem postawiony przed problemem ograniczenia transferu przy przesyłaniu pliku przez protokół http (NIE ftp!).
Usiłowałem znaleźć odpowiedź na to pytanie zarówno na forum jak i w internecie, niestety nie znalazłem ani śladu informacji na ten temat. Ograniczenie takie miałoby zostać narzucone przez php, a nie jakąś konfigurację serwera, albo przez program na nim zainstalowany. Mój obecny pomysł to użycie funkcji, która po przesłaniu do bufora serwera pakietu czeka z wysłaniem kolejnego 1 sekundę (gdy $delay=1).
Takie rozwiązanie na pewno działa, bo testowałem - być może ktoś jednak ma uwagi co do wydajności takiego rozwiązania (czy obsługiwanie downloadu w ten sposób na stronie z dużą ilością odwiedzin nie wykończy serwera), a także ewentualnie wysłucham pomysłów i uwag. Obecne rozwiązanie (chyba?) nie opóźnia wysyłki przy słabych łączach, gdy transfer i tak jest mniejszy niż ograniczenie. Jeśli rozwiązanie jest ok, to mam nadzieję, że komuś kto kiedyś będzie go szukał też się przyda. -------------------- This page is 100% valid MSHTML. We guarantee it will only view in MSIE.
Na warsztacie: replays.pl |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 1 Dołączył: 12.08.2005 Ostrzeżenie: (10%) ![]() ![]() |
jezeli to bedzie sie sypac to skieruj download na inny port serwera httpd i tam ograniczaj predkosc ustawieniami serwera lub firewallem
-------------------- web lowcy.com.pl gg 1675677
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 607 Pomógł: 23 Dołączył: 8.09.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
odradzam tej metody, serwer padnie.
Jak będzie miał do obsługi załóżmy 200 klientów, a każdy ściąga plik po 10MB, serwer zostanie koszmarnie obciążony. Osobiście polecałbym takie rozwiązanie: do małych plików, możesz bez problemu streamować natomiast większe po prostu przekieruj się headerem. -------------------- Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 16.08.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat do małych plików, możesz bez problemu streamować natomiast większe po prostu przekieruj się headerem. A czy przypadkiem nie jest tak, że jedyna różnica między dużymi plikami a małymi to czas działania skryptu? No bo do pamięci ładowane jest tylko: $chunksize = $kb_per_s*(1024); czyli przykładowo 10 kilobajtów... Chyba, że sam fakt działania w tle kilkuset "procesów" (przy kilkuset downloadach naraz) niezależnie od tego co te procesy robią jest dużym obciążeniem... ale czy wtedy nie jest tak, że nie ma znaczenia czy to duże czy małe pliki, a jedynie ile średnio w trakcie sekundy uzytkownikow sciaga pliki (jakiekolwiek?)? -------------------- This page is 100% valid MSHTML. We guarantee it will only view in MSIE.
Na warsztacie: replays.pl |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 607 Pomógł: 23 Dołączył: 8.09.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
z tego co wiem, to inpreter php działa cały czas, bo musi on otworzyć linijka po linijce plik. Czyli zabiera się za coś co do niego nie należy, bo od wysyłania plików jest apache np.
możesz to zmierzyć poprzez np. ściąganie pliku bezpośrednio z serwera,no i ze skryptu. -------------------- Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 19:16 |