![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 23.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witka!
Mam pytanie do Was chłopaki, gdyż chciałbym zliczyć na żywo ile użytkownik mojej strony pobrał danych pliku. Przykładowo pobiera 100 mb plik, gdy przerwie na np. 33 mb to chce mieć zapisane w MySQL / pliku, także jeżeli dalej będzie pobierałi dokończy to żeby całą wage pliku dopisało. Pliki podaje poprzez header + cURL lub fsockopen + stream_get_line Przy cURL probowałem z WRITEFUNCTION, jednak że ona działa poprawnie ale tylko przy pobieraniu przez przeglądarkę np. taki dodatek FDM (Free Download Manager) czy też IDM (Internet Download Manager) to wszystko psuje, i wyświetla / zapisuje błędne wyniki. taka funkcja:
dopisek do cURL:
Tak samo dzieje się przy fsockopen, gdy zastosuje taki kod:
Również przy akceleatorze FDM / IDM zwraca błędne wyniki np. pobranie 100 MB pokazuje 9, 12, 33 megajbaty pobrane. Ma ktoś jakąś ideę ? Dzięki z góry. Pozdrawiam, Ten post edytował vimoco 12.08.2012, 23:28:08 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Pobierając jakimś managerem typy IDM czy FDM tworzysz więcej niż jedną sesje pobierania pliku. W związku z tym do twojego pliku gdzie zapisujesz ile pobrano nadpisują się dane z różnych sesji. Manager pobiera plik częściami zatem nie rozróżniając sesji nadpisujesz ten sam plik. Przed odpaleniem pobierania ustal jakąś zmienną globalną:
a w funkcji od WRITE_FUNCTION daj:
Ogólnie ta metoda zapisywania jest mało wydajna przez odczyt/zapis pliku przy każdorazowym pobraniu jego cząstki - zmieniłbym to po prostu na filesize() od pliku docelowego - zapisz gdzieś ile ma pobierany plik jednorazowo - może być to w pliku. Ile się aktualnie pobrało odczytasz odpalając skrypt sprawdzający wielkość pliku docelowego a dzieląc ten rozmiar przez rozmiar całego masz procent pobrania. HTH (IMG:style_emoticons/default/wink.gif) EDIT: Dodatkowo zamiast strlen używaj mb_strlen (IMG:style_emoticons/default/wink.gif) Ten post edytował Sephirus 13.08.2012, 07:59:18 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 16:59 |