[PHP] Zlib compression functions...
$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 не понимаю... как это сделать? жду ответов ...
Код:
Accept-Encoding: deflate
Но вообще, если в запросе не стоит:
Код:
Accept-Encoding: deflate,gzip
то сервер не иммет права возвращать пакованный контент
$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І;‰(и дальше продолжение этой белиберды) .... что можете посоветовать?
http://www.codenet.ru/webmast/rfc2068rus.php
если не поможет, то можно вызывать gzip для распоковки билеберды. Например так:
Код:
$a=exec("echo \"билеберда\" | gzip -x");
print $a;
print $a;
или что-то вроже. Ключи gzip'а я не помню точно.
Цитата:
эт я давно уже нашел =) но только толку =( мне кажется что раз возвращает gzip, то и распаковывать этот текст при помощи zlib не надо, тем более что zlib это deflate ... вобщем не знаю...
Цитата:
если не поможет, то можно вызывать gzip для распоковки билеберды. Например так:
Код:
$a=exec("echo \"билеберда\" | gzip -x");
print $a;
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
похоже проблема неразрешима =(
gzip почти всегда есть в *nix системе.
Не надо gzip'у передавать HTTP заголовок, надо передавать только тело.
Если можешь, то запости сюда URL, который такую бяку отдает. Мы его того Ж)
Или в приватным сообщением пошли, если страшно :)
Цитата:
Originally posted by mike
Или в приватным сообщением пошли, если страшно :)
Или в приватным сообщением пошли, если страшно :)
страшно :) отправил ...
Код:
<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>
<?
$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>
что-то не пашет... ссылку отправил
Цитата:
Originally posted by codeX
что-то не пашет... ссылку отправил
что-то не пашет... ссылку отправил
Странно, а у меня работает. Убери unlink, зайди в /tmp и посмотри файл test.gz. У меня в mc он автоматически распоковывался и просматривался gzip'ом.
Цитата:
Originally posted by mike
Странно, а у меня работает. Убери unlink, зайди в /tmp и посмотри файл test.gz. У меня в mc он автоматически распоковывался и просматривался gzip'ом.
Странно, а у меня работает. Убери unlink, зайди в /tmp и посмотри файл test.gz. У меня в mc он автоматически распоковывался и просматривался gzip'ом.
вообщем не получается ничего =( руки мои опустились =( этот гзип меня победил ....
<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!!
Код:
readfile("test.gz");
на
Код:
readfile("test");
Когда gzip распаковывает файл, он убирает префикс .gz, если у тебя ничего не выводится, значит криво вызывается (или не вызывается) gzip.
!!!!! =)))) УРА =)))) спасибо =)) ВСЕ ПОЛУЧИЛОСЬ =)
.... все я разобрался