![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 0 Dołączył: 26.02.2008 Ostrzeżenie: (0%)
|
Napisałem prosty liczniki pobrań pliku - kiedy użytkownik kliknie w link do pobrania pliki uruchamiana jest ta strona:
Czyli najpierw aktualizuję liczbę ściągnięć przechowywaną w pliku tekstowym, a później użytkownikowi wyświetlane jest okno przeglądarki z wyborem czy chce ściągnąć plik, czy nie. I to działa, tylko problem w tym, że liczba ściągnięć będzie powiększona zawsze, niezależnie czy użytkownik kliknie w oknie przeglądarki OK, czy Anuluj. Czy da się wobec tego jakoś wykryć, czy użytkownik kliknął w OK, czy w Anuluj (i w zależności od tego zwiększać w pliku tekstowym liczbę ściągnięć lub nie zwiększać)? Ten post edytował Demoneos 13.12.2011, 13:46:13 |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 307 Pomógł: 37 Dołączył: 9.11.2010 Skąd: Zielona Góra Ostrzeżenie: (0%)
|
Proszę bardzo, mam nadzieje że implementacja nie sprawi zbyt wielu problemów:
http://bytes.com/topic/php/answers/551302-...leted-cancelled Ten post edytował Uriziel01 13.12.2011, 13:43:41 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 0 Dołączył: 26.02.2008 Ostrzeżenie: (0%)
|
Tyle że to pozwoli chyba wykryć, czy ściąganie pliku było przerwane, a ja mam tak mały plik do ściągnięcia, że nawet nie ma możliwości przerwać ściągania, bo ściąga się on natychmiastowo (IMG:style_emoticons/default/smile.gif)
Chodzi mi o coś trochę innego - żeby wykryć - zanim użytkownik rozpoczął ściąganie - czy kliknął on w przycisk OK, czy Anuluj. Czy wykrycie tego jest w ogóle możliwe w PHP? Ten post edytował Demoneos 13.12.2011, 14:40:51 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%)
|
Nawiązując do odpowiedzi kolegi "Uriziel01"
idąc za linkiem, w drugim poście poczytamy: Cytat You could check the byte count in the web server log to see if the whole file was transferred. Zaiste, jest to jakiś pomysł. Nie wiem czy ilość bajtów w logu apache będzie uzględniała przerwane połączenie, trzebaby sprawdzić. Problemem może być fakt, że plik z logiem trzeba przetworzyć aby wyciągnąc z niego to co nas interesuje, to może się okazać zbyt zasobochłonne, trzeba na to uwżać, któregoś dnia może powstać w tym miejscu wąskie gardło. Cytat In PHP, you could also do this by checking connection_aborted() after sending the file. For example: (...) ignore_user_abort(true); // Don't end if the connection breaks Bzdura, nie spotkałem się z serwerem który miałby problem z ignore_user_abort(true); ta funkcja zawsze działa prawidłowo (przynajmniej dla mnie). Nie ma dobrej odpowiedzi na tamtym forum. Ja to robie tak (działa bez zgrzytów od lat na wszystkich serwerach)
Ten post edytował wNogachSpisz 13.12.2011, 15:05:59 |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 0 Dołączył: 26.02.2008 Ostrzeżenie: (0%)
|
wNogachSpisz, czy Twój skrypt zadziała również, jeżeli użytkownik kliknie Anuluj w oknie zapisywania przeglądarki zanim jeszcze plik zaczął się pobierać?
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%)
|
wNogachSpisz, czy Twój skrypt zadziała również, jeżeli użytkownik kliknie Anuluj w oknie zapisywania przeglądarki zanim jeszcze plik zaczął się pobierać? To zazwyczaj działa w ten sposób, że przeglądarka rozpoczyna pobieranie jeszcze zanim wybierzesz lokalizacje dla pliku. Pobieranie nie następuje w chwili gdy użytkownik wybierze docelową lokalizacje pobieranego pliku. Pobieranie rozpoczyna się w chwili kiedy przeglądarka nawiąże połączenie z serwerem www, a to dzieje się natychmiast po kliknięciu w link. Odpowiedź nie brzmi Tak.... ;p Nie da się przy pomocy php wykryć czy użytkownik wybrał anuluj czy zapisz. Nie da się też tego zrobić za pomocą JavaScript. Ten post edytował wNogachSpisz 14.12.2011, 11:28:30 |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 0 Dołączył: 26.02.2008 Ostrzeżenie: (0%)
|
A w czymkolwiek innym? (IMG:style_emoticons/default/smile.gif)
W sumie więc w moim przypadku wystarczy mi to co napisałem w pierwszym poście. Pytanie tylko, czy plik tekstowy będzie tutaj odpowiednim miejscem przechowywania liczby ściągnięć? Czy nie będzie problemu jeżeli kilka osób naraz ściągnie i nastąpi kilka prób jednoczesnego zapisu do pliku tekestowe? Ten post edytował Demoneos 14.12.2011, 14:22:33 |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%)
|
flock()
|
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 0 Dołączył: 26.02.2008 Ostrzeżenie: (0%)
|
To może taki licznik zrobić lepiej w relacyjne bazie danych? Wiem, że to będzie tylko jeden wiersz w tabeli (zawierający liczbę określającą ilość ściągnięć programu), ale mimo wszystko taka baza będzie będzie dobra jeżeli w przyszłości chciałbym dać możliwość ściągania programu w innym formacie (np. exe i jar) - wówczas to już będą dwa wiersze, więc lepiej chyba zapisać to w relacyjnej bazie danych niż tekstowym pliku?
|
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 07:02 |