Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: czas sciagniecia pliku - licznik
Forum PHP.pl > Forum > Przedszkole
brak
Witam mam następujacy problem:

  1. <?php
  2.  
  3. $plik = $row['rozmiar']; // okresla rozmiar pliku zapisnego w bazie danych
  4. $modem = &#092;"56\"; //transfer w kb
  5. $czas = $plik/$modem;
  6. echo &#092;"$czas\";
  7. ?>


Wynik wyświetla mi prawidło, ale chciałbym, aby pokazywał w taki sposób:
- 0h 21 min 21 sec czy ktos moglby mi pomoc i przerobic ten kod, aby dzialal tak jak ja chce ?

Dziękuje i pozdrawiam winksmiley.jpg
rogrog
chodzi Ci o wyliczanie z liczby sekund czasu w "przyjaznym" formacie?

poszukaj było! opiera się to na dzieleniu modulo przez 60
Vengeance
moze cos takiego
  1. <?php
  2.  
  3. $plik = '1024'; // okresla rozmiar pliku zapisnego w bazie danych
  4. $modem = &#092;"56\"; //transfer w kb
  5. $czas = $plik/$modem;
  6. list($godziny, $minuty, $sekundy) = explode(' ', date(&#092;"G i s\", round($czas)));
  7. printf(&#092;"%sh %s min %s sec\", $godziny, $minuty, $sekundy);
  8. ?>


tylko trza jeszcze uwzglednic chyba strefy czasowe czyli w naszym przypadku od godziny odejmowac -1. tak mi sie wydaje smile.gif
brak
o to chodzi, lecz niestety nie dziala tzn w sumie dziala, ale pokazuje mi czas 1 h 00 min 1 sec. jest to nie mozliwe przy laczu 56 kbps i rozmiarze pliku 40 mb
dr_bonzo
  1. <?php
  2. $wielkosc_pliku = 40 * ( 1024 * 1024 * 8 ); // 320 Mib 
  3. $transfer = 56 * 1024; // modem 56Kib/s
  4.  
  5. $czas_sciagania = intval( $wielkosc_pliku / $transfer );
  6. $x = $czas_sciagania;
  7.  
  8. $sekund = $czas_sciagania % 60;
  9. $czas_sciagania = intval( $czas_sciagania / 60 );
  10. $minut = $czas_sciagania % 60;
  11. $czas_sciagania = intval( $czas_sciagania / 60 );
  12.  
  13. $godzin = $czas_sciagania;
  14. echo &#092;"$wielkosc_pliku b @ $transfer b/s = $godzin h $minut m $sekund (tj. $x sekund)<br />\";
  15.  
  16. /*
  17. 40 MiB = 40960 KiB
  18. 7KiB/s
  19.  
  20. 40960/7 ~= 5851, okolo 1.5 godziny
  21. */
  22. ?>
brak
Cytat(dr_bonzo @ 2004-11-21 16:06:24)
  1. <?php
  2. $wielkosc_pliku = 40 * ( 1024 * 1024 * 8 ); // 320 Mib 
  3. $transfer = 56 * 1024; // modem 56Kib/s
  4.  
  5. $czas_sciagania = intval( $wielkosc_pliku / $transfer );
  6. $x = $czas_sciagania;
  7.  
  8. $sekund = $czas_sciagania % 60;
  9. $czas_sciagania = intval( $czas_sciagania / 60 );
  10. $minut = $czas_sciagania % 60;
  11. $czas_sciagania = intval( $czas_sciagania / 60 );
  12.  
  13. $godzin = $czas_sciagania;
  14. echo &#092;"$wielkosc_pliku b @ $transfer b/s = $godzin h $minut m $sekund (tj. $x sekund)<br />\";
  15.  
  16. /*
  17. 40 MiB = 40960 KiB
  18. 7KiB/s
  19.  
  20. 40960/7 ~=  5851, okolo 1.5 godziny
  21. */
  22. ?>

Dzieki wielkie działa, ale czy moglbys mi kazda linijke opisac bo np. nie wiem co oznacza 40 * ( 1024 * 1024 * 8 ); lub dlaczego * 1024 $transfer = 56 * 1024;

Pozdrawiam
dr_bonzo
Cytat
moglbys mi kazda linijke opisac bo np. nie wiem co oznacza 40 * ( 1024 * 1024 * 8 );(...)


  1. <?php
  2. $wielkosc_pliku = 40 * ( 1024 * 1024 * 8 ); // wielkosc sciaganego pliku w BITACH (40 megabajtow to 40 x 1 megabajt, 1 megabajt to 1024 kilobajty, 1 kilobajt 
    t
  3.  1024 bajty, 1 bajt tpo 8 bitow, tak wiec 40 megabajtow to 40 x 1024 x 1024 x 8 
  4. ITOW)
  5. $transfer = 56 * 1024; // predkosc modemu (sciagania pliku) to 56 kilobitow / sekunde (czyli 56 x 1024 bitow /sek )
  6.  
  7. // czas sciagania obliczasz ze wzoru:
  8. // $czas_sciagania = $wielkosc_pliku / $transfer, wynik wyjdzie ci w sekundach
  9. // intval dlatego zeby miec calkowita ilosc sekund
  10.  
  11. $czas_sciagania = intval( $wielkosc_pliku / $transfer );
  12. $x = $czas_sciagania; // zapamietuje czas sciagania w SEKUNDACH aby na koniec go wyswietlic, poniewaz $c
  13. as_sciagania teraz ma ta sama wartosc ale potem bedzie onza zmieniona
  14. // czas_sciagania wychodzi 5851 sekund
  15.  
  16.  
  17. // wyliczam ile to jest 5851w godzinach:minutach:sekundach
  18. $sekund = $czas_sciagania % 60;
  19. $czas_sciagania = intval( $czas_sciagania / 60 );
  20. $minut = $czas_sciagania % 60;
  21. $czas_sciagania = intval( $czas_sciagania / 60 );
  22.  
  23. $godzin = $czas_sciagania;
  24. echo &#092;"$wielkosc_pliku b @ $transfer b/s = $godzin h $minut m $sekund (tj. $x sekund)<br />\";
  25.  
  26. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.