Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Licznik download on-line pokazujący co aktualnie jest pobierane
slawekxx
post
Post #1





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


Szukam skryptu licznika download , który pokazuje jakie aktualne pliki są pobierane, ewentualnie jak taki skrypt można napisać ?
Go to the top of the page
+Quote Post
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Linki do pobierania nie są linkami kierującymi bezpośrednio do danego pliku, tylko do skryptu.
Do tego skryptu podajesz nazwę pliku.
Skrypt uaktualnia w bazie licznik dla danego pliku. Dodaje znacznik czasu rozpoczęcia pobierania.
Odczytuje go z dysku i wysyła do klienta.
Na zakończenie pobierania uaktualnia znacznik czasu w bazie informujący o zakończeniu pobierania.

Pobrać listę aktualnie ściąganych jest bardzo prosto. Pobierasz te dla których nie ma czasu zakończenia. Przy tym możesz pobrać czas rozpoczęcia, wielkość pliku i wyliczyć prędkość pobierania, przewidywany czas itd.
Go to the top of the page
+Quote Post
slawekxx
post
Post #3





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


Tylko ,że pliki mam na serwerze usługodawcy Hostingu jak się mam wziąć za napisanie tego skryptu ?

Ten post edytował slawekxx 18.07.2011, 21:00:37
Go to the top of the page
+Quote Post
vokiel
post
Post #4





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


No i na serwerze usługodawcy hostingu stawiasz skrypt. W końcu pliki będą wysyłane z serwera to i tam powinno następować liczenie pobrań.
Go to the top of the page
+Quote Post
slawekxx
post
Post #5





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


a możesz mi podać jakieś linki do podobnych rozwiązań

Ten post edytował slawekxx 20.07.2011, 05:02:16
Go to the top of the page
+Quote Post
vokiel
post
Post #6





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Jest tego ogrom, nawet tu na forum, a w google to już całkiem.
Go to the top of the page
+Quote Post
slawekxx
post
Post #7





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


Co do samego licznika to już taki mam i działa zlicza mi kliknięcia w dany link(plik) , nie wiem tylko jak mam napisać te parę linijek kodu a dokładniej,

1. jak dodać znacznik czasu rozpoczęcia pobierania
2. Odczytuje go z dysku i wysyła do klienta
3. Na zakończenie pobierania uaktualnia znacznik czasu w bazie informujący o zakończeniu pobierania

to o czym pisałeś na wstępie.

Kod mojego licznika składa się z trzech plików config.php to połączenie z bazą, plik counter.php to
  1.  
  2. //1. include the configuration file
  3. include("config.php");
  4.  
  5. //2. Get the id from the url and store it into a variable
  6. $id = mysqli_real_escape_string($link, $_GET['id']);
  7.  
  8. //3. fetch the url and clicks from this banner
  9. $clicks = mysqli_fetch_object(mysqli_query($link, "SELECT image,hd, download FROM wp_my_plugin WHERE id=".$id.""));
  10.  
  11. //4. increase clicks with 1
  12. $new_click = $clicks->download+1;
  13.  
  14. //5. update this into the database, check if it was succesfull
  15. if(mysqli_query($link, "UPDATE wp_my_plugin SET up_post_date=NOW(), download=".$new_click." WHERE id=".$id."")):
  16. //6. redirect to the url
  17. header("Location: ".$clicks->hd);
  18. else:
  19. //6. else write to error log
  20. endif;


trzeci plik index.php to
  1. <?php
  2. include("config.php");
  3. //popular_video
  4. $sql = mysqli_query($link, "SELECT id,image,post_date,MAX(download), title FROM wp_my_plugin GROUP BY post_date DESC LIMIT 10");
  5. //new_video
  6. //$sql = mysqli_query($link, "SELECT id,image,up_post_date,title FROM wp_my_plugin GROUP BY up_post_date DESC LIMIT 10");
  7.  
  8. //
  9. ?>
  10. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  11. <html xmlns="http://www.w3.org/1999/xhtml">
  12. <head>
  13. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  14. <title>banners index page</title>
  15. <script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>
  16. <script type="text/javascript" src="js/jquery.waterwheelCarousel.min.js"></script>
  17. <link rel="stylesheet" type="text/css" href="css/waterwheel-carousel.css" />
  18.  
  19.  
  20. <script type="text/javascript">
  21. $(document).ready(function () {
  22. $("#waterwheel-carousel-vertical").waterwheelCarousel({
  23. orientation: 'vertical',
  24. startingItemSeparation: 100,
  25. startingWaveSeparation: 40,
  26. autoPlay: 2500
  27. });
  28.  
  29. });
  30. </script>
  31.  
  32.  
  33.  
  34. </head>
  35. <body>
  36. <div id="waterwheel-carousel-vertical">
  37. <div class="carousel-controls">
  38. <div class="carousel-prev"><a href="#">&lt; move down</a></div>
  39. <div class="carousel-next"><a href="#">&gt; move up</a></div>
  40. </div>
  41. <div class="carousel-images">
  42.  
  43. <?php
  44. while($result = mysqli_fetch_object($sql)):
  45. ?>
  46.  
  47. <a href="counter.php?id=<?php echo $result->id; ?>">
  48. <img src="<?php echo $result->image; ?>" alt="<?php echo $result->title; ?>" width="138" height="82"/>
  49. </a>
  50.  
  51. <?php
  52. endwhile;
  53. ?>
  54. </div> </div></div><!-- end of container -->
  55.  
  56.  
  57. </ul>
  58.  
  59. </div>
  60. </body>
  61. </html>
  62.  


Ten post edytował slawekxx 20.07.2011, 19:54:49
Go to the top of the page
+Quote Post
vokiel
post
Post #8





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Nie wiem co masz zapisane w bazie, ale pewnie ścieżkę do pliku. Żeby wysłać plik do klienta nie przekierowując na niego trzeba ten plik w skrypcie odczytać i wysłać. W taki sposób możesz kontrolować status wysyłania i stwierdzić moment jego ukończenia.
Czyli zamiast
  1. header("Location: ".$clicks->hd);


Możesz odczytać plik na raz i go przesłać (jeśli jest mały), coś a'la:
  1. $fd=fopen($clicks->hd,"r");
  2. $size=filesize($clicks->hd);
  3. $contents=fread($fd.$size);
  4. fclose($fd);
  5.  
  6. header("Content-Type: application/octet-stream");
  7. header("Content-Length: $size: ");
  8. header("Content-Disposition: attachment; filename=Nazwa_ktora_widzi_klient");
  9. echo $contents;
Wtedy użytkownik widzi rozmiar pobieranego pliku.

Lub odczytywać w części i te części wysyłać, lepsze dla dużych plików:
  1. $fd=fopen($clicks->hd,"r");
  2. // nagłówki do przeglądarki
  3. while (!feof($fd)){
  4. echo fread($fd, 1024);
  5. // tu można sprawdzać czy zwraca string'a czy FALSE
  6. }

Przejrzyj dokładnie manuala do fread, w komentarzach jest sporo przydatnych snippetów.

Popatrz tu na forum

Ten post edytował vokiel 20.07.2011, 21:38:21
Go to the top of the page
+Quote Post
slawekxx
post
Post #9





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


chcę stworzyć galerię miniatur, które są odnośnikami do linków video galerii w tym przypadku "obecnie oglądanych " raczej nie bez pobierania
Go to the top of the page
+Quote Post

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: 22.08.2025 - 20:49