Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Headers - pobieranie pliku, Skrypt pośredniczący w pobieraniu pliku z innego serwera.
NeronRS
post 28.12.2012, 07:15:14
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 17.06.2008
Skąd: Lasowice

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


Witam.

Napisałem skrypt, który pobiera plik z jednego serwera i jako pośrednik wysyła go userowi.
Wszystko działa, poza tym, że serwer czeka, aż pobierze cały plik, dopiero potem zaczyna go wysyłać.
Użytkownicy tracą czas, a ja transfer serwera. Chciał bym, żeby plik był wysyłany już w trakcie pobierania z przez skrypt z pierwszego serwera.

Do pobierania używam proxy.

Umieszczam tylko fragmenty kodu:
  1. <?php
  2. header('Content-Description: File Transfer');
  3. header('Content-Disposition: attachment; filename=piosnka.mp3');
  4. header('Keep-Alive: timeout=1');
  5. header('Connection: Keep-Alive');
  6. header('Content-Type: audio/mpeg');
  7.  
  8. $proxy="86.110.5.106";
  9. $port="80";
  10.  
  11. (...)
  12.  
  13. $fp = fsockopen($proxy, $port) or die("Zapraszamy za chwile");
  14. fputs($fp, "GET $link HTTP/1.1\r\nHost: $proxy\r\n\r\n");
  15. while(!feof($fp)){
  16. $line = fgets($fp, 4000);
  17. echo $line;
  18. $pobierz .= $line;
  19. }
  20. fclose($fp);
  21.  
  22. (...)
  23.  
  24. ?>


Niestety nigdzie nie mogę znaleźć rozwiązania, a wiem, że jest to możliwe, ponieważ zastosowane jest to na innych stronach tego typu.
Usilnie proszę o pomoc. Pozdrawiam.
Go to the top of the page
+Quote Post
Sephirus
post 28.12.2012, 08:38:46
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


może wystarczy ob_flush() ?


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
NeronRS
post 28.12.2012, 14:16:25
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 17.06.2008
Skąd: Lasowice

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


Niestety nie, chyba, że źle to stosuję.
Ale myślę, że to duży krok na przód.

Wydaje mi się, że gdyby funkcja fsockopen mogła by powoli wypisywać plik, już w trakcie jego wczytywania z serwera nie było by problemu. Ale nie mam pojęcia jak to zrobić.
  1. $fp = fsockopen($proxy, $port) or die("Zapraszamy za chwile");
  2. fputs($fp, "GET $link HTTP/1.1\r\nHost: $proxy\r\n\r\n");


Stwierdziłem, że zrobię sobie diagnostykę skryptu i wyświetlę czas zamiast echo:

  1. echo $line;


zamieniłem na:

  1. echo time().'<br>';


Jest lepiej niż myślałem, ponieważ skrypt wypisuje fragmenty pliku na bieżąco.
Ale niestety generuje plik dopiero po obróceniu całej pętli.

Pomóżcie mi proszę, zrobić żeby wysyłał go do użytkownika (generował) również na bieżąco.
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 14.07.2025 - 02:28