Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Zliczanie zakończonych pobrań, Serwer NGINX
splif
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sephirus
post
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)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 23:50