![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 2.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
na wstępie powiem, że nie jestem programistą, prowadzę stronę internetową i chciałbym zaczerpnąć informacji od ekspertów (IMG:style_emoticons/default/smile.gif) . Mam serwis z którego można pobrać programy, i chciałbym zliczać dla każdego z tych programów: ilość rozpoczętych pobrań (Wszyscy Użytkownicy) ilość rozpoczętych pobrań (Unikalni Użytkownicy) oraz ilość zakończonych pobrań (również unikalne). O ile z dwoma pierwszymi nie mam problemu, nie wiem jak zmierzyć zakończone pobrania. Zakończone pobrania = pełne pobranie pliku. Czy jest jakiś sposób na zmierzenie tego - W PHP lub czymś innym? Jeżeli tak, to na czym on mniej więcej polega (topornie, bo skomplikowanego języka i tak nie zrozumiem (IMG:style_emoticons/default/smile.gif) ) Info: Pliki do pobrania znajdują się na subdomenie postawionej na NGINX. Dzięki z góry za info i odpowiedzi. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie nie wręcz przeciwnie. Brałem udział w dużym przedsięwzięciu gdzie X serwerów pracowało 24h umożliwiając userom ściąganie plików.
Ten system był dużo bardziej zaawansowany jeżeli chodzi o samo pobieranie bo serwery w zależności od typu użytkownika ustawiały także z jaką prędkością można pobierać plik czy właśnie rejestrowały każde pobranie (rozpoczęte, urwane przez usera, urwane przez serwer, dokończone) itd itp Na początku daliśmy to w PHP (na próbę - wiedzieliśmy i tak że trzeba będzie to zrobić inaczej) - okazało się, że przy tej liczbie użytkowników serwer był bardzo obciążony :/ (16 procków i już nie pamietam ile ramu ;P) PHP miało wiele wad - pozwalało limitować prędkość pobierania, ale skrypty wisiały zajmując pamięć dodatkowo. Poza tym PHP miał problemu z poprawnym przechwyceniem końca pobierania - nie można było temu ufać - mimo zmuszania do dawkowania bajtów pliku PHP kończył to dużo wcześniej niż serwer. PHP kończył działanie mówiąc nam że plik został pobrany - natomiast plik cały czas jeszcze był pobierany z buforów serwera. Przerzuciliśmy się właśnie na Nginx'a i to byl krok do przodu - tam odpowiednie wywołanie skryptu php z podaniem pliku i uprawnień skutkowało tym że w skrypcie robiło się to co miało (jakieś tam czynności - baza itp..) a następie ustawiało kilka nagłówków łącznie z przekazaniem pliku do pobrania i kończyło skrypt. Serwer obsługiwał download i w razie jego przerwania (całościowego lub częściowego) odpalał wcześniej określony skrypt PHP, analizujący przesłane mu GET'em dane. Z tego co pamiętam było to na tyle wygodne że już w nagłówkach można było (chyba) ustawić adres jaki ma zostać wywołany czyli można było dać np.: "download_end.php?file_id=123&user=456" a on dodatkowymi postami dawał dane o pliku. Opcji konfiguracji tego było pełno (IMG:style_emoticons/default/wink.gif) Co do porównania to jak to zaczęło działać w ten sposób to nie dość że od razu spadło obciążenie to: - mieliśmy autentyczne logi pobierania plików (start, stop, procent, powód zerwania) - można było obsłużyć większą liczbę uzytkowników - serwer sam sobie ładnie radził w momencie szczytowego obciążenia - tam PHP się zapychało i wisiało |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 17:55 |