Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 15.06.2005 Ostrzeżenie: (0%)
|
W skrypcie w pewnym momencie muszę pobrać wiekszą ilość danych z serwera http. Aby usprawnić prace skryptu chcę pobierać z serwera skompresowane dane, wysyłam więc w nagłówku :
Kod Accept-Encoding: gzip W odpowiedzi otrzymuje: Kod Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 25150 Content-Type: text/html Następnie pobieram podaną ilość danych do stringa. Problem zaczyna się, gdy chce dekodowac otrzymane dane, nie radzi z tym sobie funkcja gzuncompress() generując nastepujący błąd: Kod Warning: gzuncompress(): data error in [...]update.php on line 113 Efektów także nie widać gdy czytam za pomoca gzread() bezpośrednio z gniazda (zamiast kodu html pojawiają się losowe znaki). Ktoś zna może jakieś inne rozwiazanie? A może ja gdzieś robię błąd? ;-) |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 15.06.2005 Ostrzeżenie: (0%)
|
W małym uproszczeniu:
Dodam, ze bez kompresji jest wszystko ok. EDIT: Problem rozwiązany po przejrzeniu RFC ;-) 1: Dane należy pobierac za pomocą stream_get_contents() zamiast fread(), ponieważ ta druga jest "binarnie bezpieczna" 2: Należy "obciąć" nagłówek, w wielkości 10 bajtów * 3: Należy użyć funkcji gzinflate() do zdekodowania danych *może być dluższy, ale to już odsyłam do rfc: http://www.gzip.org/zlib/rfc-gzip.html#file-format Przykładowy poprawny kod:
Ten post edytował pi_r 15.06.2005, 20:50:37 |
|
|
|
pi_r dekompresja (gzip) strumienia http 15.06.2005, 14:53:33
SongoQ Co masz w lini 113?
Wyslij kawalek kodu jak to r... 15.06.2005, 15:01:14
dopy Aktualnie pracuje nad rozpracowaniem tego problemu... 6.07.2006, 23:21:44
NuLL @pi_r - zmien naglowek Content-Type - to co wysyla... 6.07.2006, 23:49:26
dopy Egh męcze się z tym juz 3 dzień - c... 7.07.2006, 13:00:36 ![]() ![]() |
|
Aktualny czas: 29.12.2025 - 00:10 |