Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Раскодировать gzip-данные, Скрипт, который раскодирует gzip-данные 
V
    Опции темы
Elfer
Дата 27.4.2010, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 31.8.2008

Репутация: -1
Всего: -1



Переменная содержит строку gzip-данных. Необходимо раскодировать строку. Функции, которые обычно подходят, работают с файлами, а у меня строка с данными. Подскажите функцию, которая сможет раскодировать.
PM MAIL WWW ICQ   Вверх
azesmcar
Дата 27.4.2010, 14:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



Цитата(Elfer @  27.4.2010,  14:41 Найти цитируемый пост)
Функции, которые обычно подходят, работают с файлами

Это которые? gzdecode?
PM   Вверх
skyboy
Дата 27.4.2010, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(Elfer @  27.4.2010,  13:41 Найти цитируемый пост)
Функции, которые обычно подходят, работают с файлами

это какая функция с файлами работает?
gzinflategzdecodegzuncompress?
PM MAIL   Вверх
Elfer
Дата 27.4.2010, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 31.8.2008

Репутация: -1
Всего: -1



gzdecode() не работает:
Fatal error: Call to undefined function gzdecode()
gzinflate() не подходит:
Warning: gzinflate() [function.gzinflate]: data error
gzuncompress() не подходит:
Warning: gzuncompress() [function.gzuncompress]: data error

PHP Version 5.2.4
Уточню, что я делаю. Я скачиваю через curl gz-архив. Все содержимое архива присваивается переменной. Какую мне затем функцию применить, чтобы данные этой переменной распаковать в другую переменную?

Добавлено через 5 минут и 47 секунд
Функции, которые работают только с файлами они не подходят в моем случае:

gzopen();
gzread();
gzpassthru();
gzclose(); 
...
PM MAIL WWW ICQ   Вверх
Elfer
Дата 27.4.2010, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 31.8.2008

Репутация: -1
Всего: -1



Прописал в скрипте:
ini_set('zlib.output_compression', 'On');

Ошибок уже нет. Использовал все 3 ф-ции: gzinflate(), gzdecode(), gzuncompress(). Выводит нечитаемую белеберду на экран.
Пробовал определить тип сжатия через zlib_get_coding_type(). Функция вернула gzip. Какие еще идеи есть, в чем загвоздка? Почему эти 3 функции не могут распаковать данные?
PM MAIL WWW ICQ   Вверх
azesmcar
Дата 27.4.2010, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



Насколько я понял по обрывкам информации, эта функция пока недоступна. В самой документации предлагается использовать такую альтернативу
Код

function gzdecode($data){
  $g=tempnam('/tmp','ff');
  @file_put_contents($g,$data);
  ob_start();
  readgzfile($g);
  $d=ob_get_clean();
  return $d;
}


Цитата(Elfer @  27.4.2010,  15:21 Найти цитируемый пост)
ini_set('zlib.output_compression', 'On');

это не надо.

Добавлено через 1 минуту и 43 секунды
а вообще стоит попробовать сделать так
Код

curl_setopt($ch,CURLOPT_ENCODING , "gzip"); 

раз уж у тебя cURL
PM   Вверх
Elfer
Дата 27.4.2010, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 31.8.2008

Репутация: -1
Всего: -1



Вопрос решил следующим образом. Данные из переменной, содержащей строку gzip-данных, полученных через curl я сохраняю на сервер в файл. Затем информацию из этого архива читаю функциями gzopen(), gzread(), gzclose().

Код

$f = fopen($file_path, 'w');
fwrite($f, $content_gz);
fclose($f);
$zp = gzopen($file_path, "r");
$data_links = gzread($zp, 1000000);
gzclose($zp);


Это сообщение отредактировал(а) Elfer - 27.4.2010, 15:57
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0693 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.