Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Streaming plików
Forum PHP.pl > Forum > PHP
Amarel123
Witam,
mam problem ze streamingiem plików. Na początek kod:

  1. $url = "http://serwer.pl/jakis_plik.rar";
  2.  
  3. $size2 = shell_exec('curl -L --cookie plik.txt --head ' . $url);
  4.  
  5. $regexp = '/Content\-Length\: ([0-9]+)[\s]+/';
  6.  
  7. if (preg_match($regexp, $size2, $result2)) {
  8. $size = $result2[1];
  9. } else {
  10. die("error_size");
  11. }
  12.  
  13. header('Content-Description: File Transfer');
  14. header('Content-Type: application/octet-stream');
  15. header('Content-Disposition: attachment; filename=jakis_plik.rar');
  16. header('Content-Transfer-Encoding: binary');
  17. header('Expires: 0');
  18. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  19. header('Pragma: public');
  20. header('Content-Length: ' . $size);
  21.  
  22. $curl = curl_init($url);
  23. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  24. curl_setopt($curl, CURLOPT_HEADER, 0);
  25. curl_setopt($curl, CURLOPT_TIMEOUT, 20);
  26.  
  27. curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);
  28. curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Ubuntu; X11; Linux i686; rv:9.0.1) Gecko/20100101 Firefox/9.0.1");
  29. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  30.  
  31. curl_setopt($curl, CURLOPT_COOKIEFILE, "plik.txt");
  32. curl_setopt($curl, CURLOPT_COOKIEJAR, "plik.txt");
  33.  
  34. curl_exec($curl);
  35. curl_close($curl);


Potrzebuję pobrać ten plik z zewnętrznego serwera i udostępnić użytkownikowi jako pośrednik. Problem polega na tym, że rozpoczyna się pobieranie i po kilkunastu sekundach zatrzymuje się i stoi w miejscu. Wiem, że mógłbym zamiast curla użyc innych funkcji PHP, ale potrzebuję użyć pliku cookie bo bez tego zewnętrzny serwer nie wyśle mi pliku.

Bardzo proszę o pomoc.

Pozdrawiam
Amarel
krysia5522
A stremujesz z serwera premium czy jakiegoś darmowego
kormichu
Dorzuć na początek:
Kod
set_time_limit(0);

...i zakomentuj:
Kod
curl_setopt($curl, CURLOPT_TIMEOUT, 20);
Amarel123
Faktycznie! Nie zauwazylem timeout ustawionego na 20 sekund haha.gif Dziekuje smile.gif
wNogachSpisz
PEAR:HTTP_Download + PEAR:Request(1/2)
I będzie zrobione w 5 liniach.
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.