Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][Curl] Podczas pobierania ucina końcówkę pliku
sannin
post 17.11.2011, 08:48:24
Post #1





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

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


Cześć,

pobieram za pomocą curl plik z innego serwera i strumieniuję go do przeglądarki. Pobierałem już różne pliki i wszystko działało teraz mam plik który ma 100 mb (105 232 325 bajty). Natomiast przeglądarka pobiera 105 216 270 bajty, to co pobiera curl zapisywałem na serwer do pliku i wynik jest dobry 105 232 325 bajty. Czyli z serwera do serwera pobierana jest dobra ilość danych. Problem leży gdzieś po stronie serwer-klient. Sprawdziłem snifferem nagłówki które wysyłam i wyglądają ok:

Cytat
HTTP/1.1 200 OK
Date: Thu, 17 Nov 2011 07:45:15 GMT
Server: Apache
Accept-Ranges: bytes
Connection: close
Content-Description: File Transfer
Content-Disposition: attachment; filename=test28.rar
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Last-Modified: Thu, 17 Nov 2011 07:45:16 GMT
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
Content-Range: bytes 0-105232324/105232325
Content-Length: 105232325
Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip
Content-Type: application/force-download


Jeśli ręcznie zmienię wielkość Content-Length na o 1 mb większą to pobiera się cały plik. Może ktoś spotkał się z czymś takim?

Ten post edytował sannin 17.11.2011, 09:22:21
Go to the top of the page
+Quote Post
Sephirus
post 17.11.2011, 08:51:17
Post #2





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

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


Co rozumiesz przez strumieniowanie do przeglądarki? I jak się sprawa ma na przykład z plikiem zajmującym 90MB?


--------------------
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
sannin
post 17.11.2011, 18:22:06
Post #3





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

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


Coś takiego:
  1. curl_setopt($this->c, CURLOPT_URL, $this->file['download_link']);
  2. curl_setopt($this->c, CURLOPT_TIMEOUT, 0);
  3. curl_setopt($this->c, CURLOPT_RETURNTRANSFER, 0);
  4. curl_exec($this->c);


Z 90 mb nie wiem, ale pliki 5-10 mb oraz 200-300 mb bez problemu.

Natomiast curl. Przesyła do głównego serwera coś takiego:
Cytat
HTTP/1.1 200 OK
Date: Thu, 17 Nov 2011 08:19:52 GMT
Connection: close
Content-Type: application/octet-stream
Accept-Ranges: bytes
Content-Disposition: Attachment; filename=test28.rar
Content-Length: 105232325


Wina serwera, na innym śmiga aż miło.
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: 12.07.2025 - 14:37