Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Serwer przerywa pobranie w okolicy 1GB
Forum PHP.pl > Forum > Serwery WWW
DawidQ123
Witam zrobiłem skrypt do streamowania plików ale mam pewien problem i wydaje mi się że leży on po stronie serwera.
Mianowicie w trakcie streamu plików większych niż 1GB np 1.5GB pobiera się 1GB a potem chrome zakańcza pobieranie.
Wygląda to tak:
http://scr.hu/1sjs/eqjaa
a po chwili
http://scr.hu/1sjs/2jquj

Pracuje na VPS z Parallels Plesk Panel v11.5.30_build115130819.13 os_CentOS 6
(System CentOS 6.4).
(FastCGI)

Czy ktoś mógłby mnie nakierować co z tym fantem zrobić? istnieją jakieś limity rozmiaru plików do pobrania? a jeżeli tak to jak je zmienić?
timon27
Tak ogromne pliki mogą powodować różne problemy nie tylko z serwerem.
Ja bym zrezygnował z tak dużych plików jeśli się da.
Podzielił na party albo zrobił torrrentami.

Pobierz plik bezpośrednio (wpisując jego url w przeglądarkę) i powiedz czy problem też występuje?

Pytanie: w jaki sposób pobierasz ten plik?
Jeśli przez panel to nie widzę sensu pobierania części filmu ("Droga na północ") przez panel.
Jeśli ze strony to czemu mówisz jak skonstruowany jest serwer a nie strona?
DawidQ123
Pobierając link bezpośrednio nie ma problemów ale on musi byś streamowany.

Natomiast moje pobieranie leci po php.
Tu cześć odpowiedzialna za stream:
  1. (...)
  2. $offset = 0;
  3.  
  4. if(is_numeric($filesize)){
  5. header('Content-Description: File Transfer');
  6. header('HTTP/1.1 206 Partial Content');
  7. header('Accept-Ranges: bytes');
  8. header('Content-Range: bytes ' . $offset . '-' . ($offset + $filesize) . '/' . $filesize);
  9. header('Content-Type: application/octet-stream');
  10. header('Content-Disposition: attachment; filename='.basename($filename));
  11. header("Connection: Keep-alive");
  12. header('Expires: 0');
  13. header('Pragma: no-cache');
  14. header('Content-Length: ' . $filesize);
  15. flush();
  16. readfile($url);
  17. }else{
  18. sleep(15);
  19. header("HTTP/1.1 404 Not Found");
  20. die("HTTP/1.1 404 Not Found");
  21. }
  22. (...)


Cytat
Jeśli ze strony to czemu mówisz jak skonstruowany jest serwer a nie strona?

Ponieważ w moim odczuciu wydaje mi się że problem leży właśnie po stronie serwera bo zawsze zakańcza przy 1GB. Może się mylę.
timon27
Cytat(DawidQ123 @ 15.01.2014, 20:07:50 ) *
Ponieważ w moim odczuciu wydaje mi się że problem leży właśnie po stronie serwera bo zawsze zakańcza przy 1GB. Może się mylę.


Ale powiedziałeś że bezpośrednio pobiera się bez problemu. Czyli to nie jest wina serwera.
Nie widze błędów w php, ale to nie oznacza że ich nie ma. Ktoś wie?

Spróbuj dać:
ini_set('memory_limit', '512M');
jak sie przerwie po 0,5gb to tu jest problem.
(sprawdź najpierw na mniejszej wartości 512 bo może być ona odgórnie ograniczona przez inne mechanizmy, dopiero potem ustaw 10000M)
DawidQ123
Cytat(timon27 @ 16.01.2014, 13:26:43 ) *
Ale powiedziałeś że bezpośrednio pobiera się bez problemu. Czyli to nie jest wina serwera.
Nie widze błędów w php, ale to nie oznacza że ich nie ma. Ktoś wie?

Spróbuj dać:
ini_set('memory_limit', '512M');
jak sie przerwie po 0,5gb to tu jest problem.
(sprawdź najpierw na mniejszej wartości 512 bo może być ona odgórnie ograniczona przez inne mechanizmy, dopiero potem ustaw 10000M)


Dodanie ini_set('memory_limit', '512M'); nic nie dało - plik pobrał się do 1GB i tak jak wcześniej na tym etapie zakończyło sie jego pobieranie.
Pyton_000
Zerknij na to, może to coś pomoże.

http://stackoverflow.com/questions/597159/...reliably-in-php
DawidQ123
Nic z tych rzeczy nie pomoże bo to nie wina kodu php. Uruchomiłem sobie skrypt Vinget na serwerze i to samo podczas streamu 1GB i koniec pobierania.
Ktoś jest mi wstanie podpowiedzieć co może być nie tak?
ano
Z manuala php http://pl1.php.net/readfile

Kod
Note:
readfile() will not present any memory issues, even when sending large files, on its own. If you encounter an out of memory error ensure that output buffering is off with ob_get_level().
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.