Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[PHP] Zlib compression functions...

1.9K
10 февраля 2003 года
codeX
30 / / 30.10.2002
Итак получаю html-код таким образом:
$GrabURL = "http://server.ru/script.pl?var1=1&var2=2";
$file = fopen("$GrabURL", "r");
$rf.= fread($file, 20000);
fclose($file);
получаю белиберду ...
получаю так:
function geturl($url, $server)
{
do
{
$so = fsockopen($server, 80, &$errno, &$errstr, 15);
}
while(!$so);
unset($zapros);
$zapros = "GET ".$url." HTTP/1.0\r\n";
$zapros = $zapros . "HOST: " . $server . "\r\n";
$zapros = $zapros . "\r\n";
fputs($so, $zapros);
unset($buf);
while(!feof($so)) $buf.=fread($so,2048);
fclose($so);
return($buf);
}
$buf = geturl('/script.pl?var1=1&var2=2, server.ru');
получаю с той же белибердой - набором символов, ценную информацию в в иде http-ответа сервера в котором говорится:
content-encoding: gzip
при использовании ф-ции gzuncompress(); на эту белиберду выдает:
Warning: gzuncompress: data error in \script.php
да и при эксперименте (при открытии урлы копируется в буфер обмена контент,вставляется и в тексте PHP проги присваевается переменной которую в дальнейшем кодируем gzcompress();) результат разный, то есть этот бессвязный набор символов разный ... вопрос что делать?
до этого я уже постил подобный вопрос но его почему-то игнорируют =( хотя для меня он очень важен ... было так же мне сказанно что при обращении к серверу в http заголовке можно указать что я gzip не понимаю... как это сделать? жду ответов ...
4
10 февраля 2003 года
mike
3.7K / / 01.10.2002
Попробуй в HTTP запросе указать:
 
Код:
Accept-Encoding: deflate

Но вообще, если в запросе не стоит:
 
Код:
Accept-Encoding: deflate,gzip

то сервер не иммет права возвращать пакованный контент
1.9K
10 февраля 2003 года
codeX
30 / / 30.10.2002
хмм похоже это специально сделанно =(( хотя просто через браузер все видно. пробывал:

$zapros = "GET ".$url." HTTP/1.0\r\n";
$zapros = $zapros . "HOST: " . $server . "\r\n";
$zapros = $zapros . "Accept-Encoding: deflate \r\n";
$zapros = $zapros . "\r\n";

получил:
HTTP/1.0 200 OK Server: 0W/0.6d Date: Mon, 10 Feb 2003 13:54:50 GMT Content-Type: text/html; charset=windows-1251 Content-Length: 1334 content-encoding: gzip cache-control: no-cache x-pad: avoid browser bug ‹ХW[oЫ6~ПЇаT¬ЩЂЪ¦.iлTRб[лlMё†bZ¦m!ґдItЪф/н'фi`ГЂ!X±Ѕ»Yјє ў8I‹nh°оPІ;‰(и дальше продолжение этой белиберды) .... что можете посоветовать?
4
10 февраля 2003 года
mike
3.7K / / 01.10.2002
посмотри тут:

http://www.codenet.ru/webmast/rfc2068rus.php

если не поможет, то можно вызывать gzip для распоковки билеберды. Например так:

 
Код:
$a=exec("echo \"билеберда\" | gzip -x");
print $a;


или что-то вроже. Ключи gzip'а я не помню точно.
1.9K
11 февраля 2003 года
codeX
30 / / 30.10.2002
Цитата:
Originally posted by mike
посмотри тут:

http://www.codenet.ru/webmast/rfc2068rus.php


эт я давно уже нашел =) но только толку =( мне кажется что раз возвращает gzip, то и распаковывать этот текст при помощи zlib не надо, тем более что zlib это deflate ... вобщем не знаю...

Цитата:

если не поможет, то можно вызывать gzip для распоковки билеберды. Например так:

 
Код:
$a=exec("echo \"билеберда\" | gzip -x");
print $a;


или что-то вроже. Ключи gzip'а я не помню точно.


скачал gzip, бросил в папку апачи /apache/libexec/ и далее
$a=exec("echo ".$buf." | gzip -d");
print $a;
пробовал даж:
$a=exec("echo \"$buf\" | gzip -d");
$a=exec("echo \"$buf\" | gzip -x");
вроде правильно все ... возвращает в любом случае:
"HTTP/1.0 200 OK
похоже проблема неразрешима =(

4
11 февраля 2003 года
mike
3.7K / / 01.10.2002
Зачем скачивать ??

gzip почти всегда есть в *nix системе.

Не надо gzip'у передавать HTTP заголовок, надо передавать только тело.

Если можешь, то запости сюда URL, который такую бяку отдает. Мы его того Ж)

Или в приватным сообщением пошли, если страшно :)
1.9K
12 февраля 2003 года
codeX
30 / / 30.10.2002
Цитата:
Originally posted by mike
Или в приватным сообщением пошли, если страшно :)



страшно :) отправил ...

4
12 февраля 2003 года
mike
3.7K / / 01.10.2002
Вуаля:

Код:
<HTML><BODY>
<?
$f=fopen("/tmp/test.gz","wb");
$fr=fopen("http://твойurl.com","rb");
while (!feof ($fr)) {
    $data=fread($fr,1000);
    fwrite($f,$data);
    }
fclose($f);
fclose($fr);

$a=`gzip -d /tmp/test.gz`;
readfile("/tmp/test")
unlink("/tmp/test")
?>
</BODY></HTML>
1.9K
12 февраля 2003 года
codeX
30 / / 30.10.2002
что-то не пашет... ссылку отправил
4
12 февраля 2003 года
mike
3.7K / / 01.10.2002
Цитата:
Originally posted by codeX
что-то не пашет... ссылку отправил



Странно, а у меня работает. Убери unlink, зайди в /tmp и посмотри файл test.gz. У меня в mc он автоматически распоковывался и просматривался gzip'ом.

1.9K
14 февраля 2003 года
codeX
30 / / 30.10.2002
Цитата:
Originally posted by mike


Странно, а у меня работает. Убери unlink, зайди в /tmp и посмотри файл test.gz. У меня в mc он автоматически распоковывался и просматривался gzip'ом.



вообщем не получается ничего =( руки мои опустились =( этот гзип меня победил ....

1.9K
17 февраля 2003 года
codeX
30 / / 30.10.2002
вообщем полная капитуляция моих сил :( вот последние результаты .... ничего не получается

<HTML><BODY>
<?
$filename = 'test.gz';
$f=fopen($filename,w);
$fr=fopen("http://demonscity.combats.ru/zayavka.pl?logs=23_01_03&filter=D-Jay","rb");
while (!feof ($fr)) {
$data=fread($fr,1000);
fwrite($f,$data);
}
fclose($f);
fclose($fr);

$a=`gzip -d test.gz`;
readfile("test.gz");
//unlink("test.gz");
print $a."

";
?>
</BODY></HTML>

вот как выглядит результат :
жать тут

ПААААМАГИТЕ! SOS!!
4
17 февраля 2003 года
mike
3.7K / / 01.10.2002
Поменяй

 
Код:
readfile("test.gz");

на
 
Код:
readfile("test");


Когда gzip распаковывает файл, он убирает префикс .gz, если у тебя ничего не выводится, значит криво вызывается (или не вызывается) gzip.
1.9K
17 февраля 2003 года
codeX
30 / / 30.10.2002
!!!!! =)))) УРА =)))) спасибо =)) ВСЕ ПОЛУЧИЛОСЬ =)
1.9K
25 февраля 2003 года
codeX
30 / / 30.10.2002
.... все я разобрался
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог