Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Limitowanie transferu, Przesyłanie plików przez http
CyklOP
post
Post #1





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 16.08.2003
Skąd: Wrocław

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


Witam, ostatnio zostałem postawiony przed problemem ograniczenia transferu przy przesyłaniu pliku przez protokół http (NIE ftp!).

Usiłowałem znaleźć odpowiedź na to pytanie zarówno na forum jak i w internecie, niestety nie znalazłem ani śladu informacji na ten temat.

Ograniczenie takie miałoby zostać narzucone przez php, a nie jakąś konfigurację serwera, albo przez program na nim zainstalowany.

Mój obecny pomysł to użycie funkcji, która po przesłaniu do bufora serwera pakietu czeka z wysłaniem kolejnego 1 sekundę (gdy $delay=1).

  1. <?php
  2.  
  3. function readfile_chunked ($filename,$delay,$kb_per_s) {
  4. $chunksize = $kb_per_s*(1024); // how many kbytes per chunk
  5. $buffer = '';
  6. $handle = fopen($filename, 'rb');
  7. if ($handle === false) {
  8. return false;
  9. }
  10. while (!feof($handle)) {
  11. $buffer = fread($handle, $chunksize);
  12. print $buffer;
  13. sleep($delay);
  14.  
  15. }
  16. return fclose($handle);
  17. }
  18.  
  19. ini_set( 'output_buffering','Off' );
  20. //ini_set( 'implicit_flush','On' );
  21.  
  22. header("Content-type: application/download");
  23. header('Content-Disposition: attachment; filename="'.$name.'"');
  24. readfile_chunked($name,1,10);
  25.  
  26. ?>


Takie rozwiązanie na pewno działa, bo testowałem - być może ktoś jednak ma uwagi co do wydajności takiego rozwiązania (czy obsługiwanie downloadu w ten sposób na stronie z dużą ilością odwiedzin nie wykończy serwera), a także ewentualnie wysłucham pomysłów i uwag.

Obecne rozwiązanie (chyba?) nie opóźnia wysyłki przy słabych łączach, gdy transfer i tak jest mniejszy niż ograniczenie.

Jeśli rozwiązanie jest ok, to mam nadzieję, że komuś kto kiedyś będzie go szukał też się przyda.


--------------------
This page is 100% valid MSHTML. We guarantee it will only view in MSIE.
Na warsztacie: replays.pl
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 14:25