![]() |
![]() |
![]()
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%) ![]() ![]() |
Cherokee nie znam akurat ale poczytasz - może coś ciekawego znajdziesz (IMG:style_emoticons/default/wink.gif) Co do twojego pytania jak to podźwignie PHP to możesz śmiało próbować - jeżeli serwer jest mocny tak jak pisałeś to bez problemu sobie z tym poradzi - ważne jest tylko jedno:
PHP kiepsko sobie radzi z reguły z takimi sytuacjami jak przerwane pobranie i tym podobne - kiedy user będzie chciał pobrać plik 1GB pobierze 100MB i przerwie to domyślnie PHP będzie dalej zasysał ten plik i wyrzucał go w próżnię. Takich właśnie sytuacji trzeba się pozbyć. O co dokładnie chodzi - o wykrycie, czy użytkownik się rozłączył - musisz poczytać i pokombinować (najlepiej przetestować samemu) z takimi akcjami jak wykrycie zakończenia skryptu czy wykrycie rozłączenia przez użytkownika - (PHP ignore_user_abort albo coś takiego) - wszystko jest ładnie opisane jak działa. Co do samego wysyłania pliku do usera polecam zwyczajnie CURL'a - poradzi sobie bez problemów - sam na tym działałem i sobie radziło - potem przeszedłem na własną klasę wykorzystującą FSOCKOPEN - mniej narzutu. Musisz też potestować jakie są różnicę pomiędzy HOSTEM, twoim serwerem a przykładowym USEREM. Chodzi o to by pliki nie były zaciągane z hosta 100x szybciej niż ściągane przez użytkownika bo będą zawalać pamięć serwera - idealnym rozwiązaniem bylo by zastosowanie idei z proxy czyli - dostałem 100KB od razu je przesyłam i kasuje itd itp - nie ominiesz jednak przetrzymywania danych na serwerze w związku z tym że uzytkownik nie ma możliwośći odbierać ich z taką szybkością. Podsumowując - zwróć uwagę na user abort i zakańczanie skryptów PHP - jeżeli to opanujesz to dla średniej liczby użytkowników to będzie hulać (IMG:style_emoticons/default/wink.gif) Grunt aby nic nie pozostawało i nie wisiało (IMG:style_emoticons/default/wink.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 23:50 |