![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Levsha |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 30.9.2005 Репутация: нет Всего: 4 |
sTa1kEr, я уже правда по своему исправил, но все равно спасибо
-------------------- Предлагаем создание сайта в Хабаровске - http://web-alt.ru. А ты сдал анализы? Самый полный анализ сайта! |
|||
|
||||
Levsha |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 30.9.2005 Репутация: нет Всего: 4 |
Столкнулся с такой проблемой, закачивая страницы вышеописанным методом в текст документов иногда вставляются "левые" наборы символов типа: "15f", "25e4", "14bb". Почему это происходит? Может ли это быть некая защита сайтов?
И еще проблема. Как я понимаю, тот же вышеописанный метод использует кеширование? Как его включать и выключать? -------------------- Предлагаем создание сайта в Хабаровске - http://web-alt.ru. А ты сдал анализы? Самый полный анализ сайта! |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
Надо разбираться на конкретном примере.
Нет, кэширование не используется. Где вы это увидели? |
|||
|
||||
Levsha |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 30.9.2005 Репутация: нет Всего: 4 |
Да просто браузер выдал одно, а сервер скачал другое...
Добавлено через 12 минут и 11 секунд Ну например если скачивать сайт с запросом: http://www.service-whois.ru/?domain=mail.ru получаю баги (на скриншоте) sTa1kEr, проверьте пожалуйста, может это только у меня глючит. Что примечательно, для http://www.service-whois.ru/?domain=yandex.ru такого нет. Присоединённый файл ( Кол-во скачиваний: 18 ) ![]() -------------------- Предлагаем создание сайта в Хабаровске - http://web-alt.ru. А ты сдал анализы? Самый полный анализ сайта! |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
||||
|
||||
teroni |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 15.5.2007 Где: Днепропетровск Репутация: 1 Всего: 22 |
Да, сталкивался с такой же проблемой...
Из-за чего возникает - так и не понял, для решения - тупо обрезал все, до первого < и после последнего >. Мне кажется, что это каким-то образом зависит от хостинга, на котором расположена скачиваемая страница, т.к. на некоторых такая проблема не возникает. Это сообщение отредактировал(а) teroni - 20.6.2007, 11:14 |
|||
|
||||
sTa1kEr |
|
||||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
Разобрался в чем дело. Достаточно было повнимательнее почитать спецификацию HTTP 1.1
![]() Смысл этого хидера в крации: Для лучшего контроля передачи данных в HTTP 1.1 существует возможность передавать контент по частям с указанием размера каждой части. Сначала передается размер следующего блока (число в HEX и следующий за ним разделитель строки CRLF), затем сам блок и так далее пока размер блока не будет равен нулю (0 в самом конце). Я вижу три способа решения этой проблемы: 1. Опять же самое простое. Вместо HTTP 1.1 использовать HTTP 1.0. 2. Сначала получаем хидеры. Смотрим используется ли Chunked Coding (заголовок Transfer-Encoding: chunked). Если используется то полученный контент декодируем при помощи http://ru2.php.net/manual/ru/function.http...nked-decode.php. Но для этого придется установить соответствующее PECL расширение. 3. Имхо, самое правильное. Если предоставляется возможность дополнительного контроля целостности данных, то почему бы этим не воспользоваться?
Соответственно в функции MyDownload при чтении будет:
Это сообщение отредактировал(а) sTa1kEr - 20.6.2007, 17:58 |
||||
|
|||||
Levsha |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 30.9.2005 Репутация: нет Всего: 4 |
Вот уж действительно раздел для профи...
Пытаюсь подстроить в свое... Отпишусь... -------------------- Предлагаем создание сайта в Хабаровске - http://web-alt.ru. А ты сдал анализы? Самый полный анализ сайта! |
|||
|
||||
Levsha |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 30.9.2005 Репутация: нет Всего: 4 |
Есть, срабатывает шикарно, ошибок нет. Щас еще чутка доделаю-приделаю и выложу свою версию
![]() sTa1kEr, мегаспасибо -------------------- Предлагаем создание сайта в Хабаровске - http://web-alt.ru. А ты сдал анализы? Самый полный анализ сайта! |
|||
|
||||
Levsha |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 30.9.2005 Репутация: нет Всего: 4 |
В общем если нужно - моя версия:
Основное отличие в том, что дается функции двумерный массив, а возвращается массив содержащий тело документа[0] и кодировку[1]. В принципе туда легко можно добавить любую другую информацию... -------------------- Предлагаем создание сайта в Хабаровске - http://web-alt.ru. А ты сдал анализы? Самый полный анализ сайта! |
|||
|
||||
Levsha |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 30.9.2005 Репутация: нет Всего: 4 |
А вот и новая проблема, если один из скачиваемых сайтов не отвечает долгое время, т.е. вообще нет ответа от сервера, ни ошибки, ничего другого, то останавливается все, соответственно сайт встает. Возможно ли установить лимит по времени на ответ сервера, чтобы по истечении возвращалась бы пустая строка или что-то вроде... Ну в общем лишь бы сайт не вставал.
-------------------- Предлагаем создание сайта в Хабаровске - http://web-alt.ru. А ты сдал анализы? Самый полный анализ сайта! |
|||
|
||||
Levsha |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 30.9.2005 Репутация: нет Всего: 4 |
У меня ощущение что $timeout не работает.. Я так понимаю, $timeout=30 подразумевает секунды? А страница прогружается за пять секунд, не выдав никакого результута...
Есть соображения у кого? -------------------- Предлагаем создание сайта в Хабаровске - http://web-alt.ru. А ты сдал анализы? Самый полный анализ сайта! |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
Странно... Если хоста не существует, то поток не будет создан. А если будет ошибка, то он попадет в массив $eStreams и будет благополучно выброшен. Можете привести пример хоста из-за которого он зацикливается?
$timeout - это таймаут только для соединения с сервером. Т.ч. вполне возможно, что он законнектиться с сервером за 5 секунд и тут же сервер вернет ошибку. |
|||
|
||||
Levsha |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 30.9.2005 Репутация: нет Всего: 4 |
Хост существует, просто он долго думает что ответить... Ну это в прошлом...
Сейчас просто если я делаю закачку 11 требуемых документов, то происходит ошибка, причем на удаленном сервере он вообще не выдает ошибки, просто работа приостанавливается, даже при включенном error_reporting и display_errors. А локально выдается
А 301я строка - это первая строка цикла:
Добавлено @ 15:30 Можно ли сделать, чтобы он вообще если не успел ниче за 30 сек, то пусть вообще пустые строки вернет. Это сообщение отредактировал(а) Levsha - 25.6.2007, 15:30 -------------------- Предлагаем создание сайта в Хабаровске - http://web-alt.ru. А ты сдал анализы? Самый полный анализ сайта! |
||||
|
|||||
sTa1kEr |
|
||||||||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
Хм, сервер вернул контент без хидера или просто скрипт не успел все скачать. Попробуйте увеличьте максимальное время работы скрипта.
И добавьте проверку
В этом мире нету ничего невозможного. В начале функции в переменную запишите метку времени и добавьте в цикл условие. Можно добавить в цикл для чтения данных такую же проверку. Можно воспользоваться register_shutdown_function(), но тогда при таймауте не удастся вывести ничего в браузер.
Это сообщение отредактировал(а) sTa1kEr - 25.6.2007, 16:16 |
||||||||
|
|||||||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |