The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"'Мусор' в данных, полученных через fsocketopen"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"'Мусор' в данных, полученных через fsocketopen"
Сообщение от Boris Искать по авторуВ закладки(??) on 31-Май-04, 18:02  (MSK)
Доброе время суток
Возникла проблема: для последующего парсинга получаю данные
через fsocketopen/fwrite/fread.
Так вот, при небольших размерах получаемого кода (~10-15kb) все отлично;
а при бОльших (~50-70kb) в тексте нет-нет да и проскочит какой-нибудь мусор типа "<1f01font "... и тд. Причем иногда бывает трудно отсеиваемый набор символов типа "81.13.2000104.17" (в смысле 2000 влезает в IP-адрес)

Может кто-нибудь подсказать, в чем могла порыться собака и есть ли способы борьбы с этим
Заранее спасибо.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "'Мусор' в данных, полученных через fsocketopen"
Сообщение от Rohan emailИскать по авторуВ закладки on 01-Июн-04, 20:10  (MSK)
Для этого код смотреть надо...
У меня был гениальный глюк (просто посмеяться)

написал я на php маленькую приблуду для обращения к com1 (под виндой)
открывал его (com1) кажись как R+
ТАК ВОТ ПРИ ЧТЕНИИ ИЗ НЕГО Я ПОЛУЧАЛ КОД СВОЕЙ ЖЕ ПРИБЛУДЫ!!! А НЕ ОТВЕТ ДЕВАЙСА.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "'Мусор' в данных, полученных через fsocketopen"
Сообщение от Boris Искать по авторуВ закладки(??) on 02-Июн-04, 10:38  (MSK)
>Для этого код смотреть надо...

Да, конечно, here you are:
<?
$sock = @fsockopen($host, $port, $ernum, $erstr, $timeOut);
$headers = Array(
  "GET " . $url . " HTTP/1.1",
  "Host: " . $host,
  "Referer: " . $referer,
  "Accept: */*",
  "Accept-Language: en",
  "Connection: Keep-Alive",
  "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2)",
  "Cookie: cook=value",
  "",
  ""
);
fputs($sock, implode("\r\n", $headers));
$data = "";
while (!feof($sock)) {
  $data .= fread($sock, 128);
}
fclose($sock);
?>
Так вот, уже сразу после этих манипуляций в тексте появляются неожиданные
участки текста наподобие описанных выше...

Хотелось бы узнать, это "кривые руки" или особенность реализации сокетов в PHP, или еще что-нибудь не учтенное мной.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "'Мусор' в данных, полученных через fsocketopen"
Сообщение от Гурьянов Искать по авторуВ закладки on 03-Июн-04, 10:23  (MSK)
>$sock = @fsockopen($host, $port, $ernum, $erstr, $timeOut);
>$headers = Array(
>  "GET " . $url . " HTTP/1.1",
>  "Host: " . $host,

Насколько я знаю, Apache, например, умеет отдавать документы частями ( Chunked Encoding). Небольшие документы отдаются сразу, большие - по частям. По-моему, между частями идет какая-то управляющая прослойка.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "'Мусор' в данных, полученных через fsocketopen"
Сообщение от Boris Искать по авторуВ закладки(??) on 03-Июн-04, 15:57  (MSK)
>Насколько я знаю, Apache, например, умеет отдавать документы частями ( Chunked Encoding).
>Небольшие документы отдаются сразу, большие - по частям. По-моему, между частями
>идет какая-то управляющая прослойка.

А какие есть идеи, как этого избежать или устранить при получении, ведь
"управляющие прослойки" от урла к урлу различаются друг от друга?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "'Мусор' в данных, полученных через fsocketopen"
Сообщение от Rohan emailИскать по авторуВ закладки on 03-Июн-04, 18:31  (MSK)
Есть предложение:
токрыть ручками telnet
вбить в него ручками запрос
посмотреть что получим
выложить этот текст куда нибудь на посмотреть/показать

у меня есть гипотеза что это не управляющие прослойки, а глюк по поводу "почти прибывшего пакета"

что будет если перед началом чтения из сокета поспать секунд 10?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "'Мусор' в данных, полученных через fsocketopen"
Сообщение от vnp emailИскать по авторуВ закладки on 05-Июн-04, 07:04  (MSK)
>>Насколько я знаю, Apache, например, умеет отдавать документы частями ( Chunked Encoding).
>>Небольшие документы отдаются сразу, большие - по частям. По-моему, между частями
>>идет какая-то управляющая прослойка.

Дело не в апаче, это стандарт http/1.1; см rfc2616

>А какие есть идеи, как этого избежать или устранить при получении, ведь
>"управляющие прослойки" от урла к урлу различаются друг от друга?

Просить http/1.0

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "'Мусор' в данных, полученных через fsocketopen"
Сообщение от Boris Искать по авторуВ закладки(??) on 07-Июн-04, 10:03  (MSK)
>Дело не в апаче, это стандарт http/1.1; см rfc2616
>Просить http/1.0

О, мля, все заработало.....
Пойду читать спецификации.

Всем спасибо за участие и помощь. Peace.


  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру