Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Limitowanie prędkości pobierania plików dynamicznych
seba22
post
Post #1





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

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


Witam,

Mam plik zapisany w zmiennej $zdjęcie.

Chciał bym wysłać go do przeglądarki z maksymalną prędkością 20KB/s.

Czy jest na to jakaś metoda ?

W wypadku plików statycznych, było obejście związane z fopen, wysyłanie chyba 4 kilobajtów w pętli a potem usleep na (x milisekund)... i dzięki temu mogliśmy dowolnie bawić się w limitowanie transferu...

Jak sytuacja miewa się w wypadku czegoś, co nazwijmy nie parlamentarnie mam w "stringu" i nie mogę wydawać parametru który mówi ile mam odczytać i ile wysłać... ?

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
p-avel
post
Post #2





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 21.08.2009

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


Sory, ale tu http://pl.php.net/manual/pl/function.fread.php nie ma nic konkretnego, szukając po necie też znajdziesz w większości przykład

  1. // local file that should be send to the client
  2. $local_file = 'test-file.zip';
  3. // filename that the user gets as default
  4. $download_file = 'your-download-name.zip';
  5.  
  6. // set the download rate limit (=> 20,5 kb/s)
  7. $download_rate = 20.5;
  8. if(file_exists($local_file) && is_file($local_file)) {
  9. // send headers
  10. header('Cache-control: private');
  11. header('Content-Type: application/octet-stream');
  12. header('Content-Length: '.filesize($local_file));
  13. header('Content-Disposition: filename='.$download_file);
  14.  
  15. // flush content
  16. flush();
  17. // open file stream
  18. $file = fopen($local_file, "r");
  19. while(!feof($file)) {
  20.  
  21. // send the current file part to the browser
  22. print fread($file, round($download_rate * 1024));
  23.  
  24. // flush the content to the browser
  25. flush();
  26.  


problem jest w tym że w zależności od prędkości łącza po stronie klienta, oraz to że nie znamy rozmiaru pliku który będzie przesłany powoduje to to że limit prędkości jest różny, trzeba by sprawdzać w jakiś sposób może prędkość łącza po stronie klienta i tym parametrem się sugerować

Pozdr
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: 27.12.2025 - 20:07