Не работают сокеты

_RVK_

Новичок
Не работают сокеты

Пишу скрипт котрый открывает сокет, шлёт туда HTTP заголовок, и читает ответ. На локальной машине, под Win2000 на PHP 4.3 всё работает нормально. Когда закачиваю на сервер(Linux RedHat 7.3, PHP 4.2) сервер выдаёт ошибку "Ответ нулевой длины". Может кто подскажет почему ошибка.
 

_RVK_

Новичок
Извиняюсь. Просто тут ничего интересного нет, имхо

Открываем сокет.
$fp=fsockopen($url,$port,$errno,$errstr)

Запрос
fputs($fp,"GET http://www.ifrigate.ru HTTP/1.0\r\n\r\n");

Читаем ответ
$result = fread($fp, 60000000);

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

RomikChef

Guest
ха ха ха
ты вообще когда-нибудь видел гет запрос где-нибудь еще, кроме своего воображения?
 

_RVK_

Новичок
Вообщето это лишь пример. На самом деле всё гораздо сложнее но я не стал это здесь приводить. Под виндой всё работает. А под линухом нет. Да забыл сказать что сначало идёт чтение из XML вот так:

$xml = join('',file('slbase.xml'));
$xml = xmldoc($xml);
$xml->xpath_init();
$ctx = xpath_new_context($xml);
$sites = xpath_eval($ctx,'//site-list/site');

Там находится информация о сайте. Запрос, параметры, регулярные выражения для парсинга.... phpinfo() говорит что поддержка xml стоит... и xpath тоже....
 

tony2001

TeaM PHPClub
Diesel:
>Вообщето это лишь пример.
>На самом деле всё гораздо сложнее но я не стал это здесь приводить.
ты издеваешься?
я специально дал цитату из правил для того, чтобы ты ее прочел и дал реальный кусок кода и реальную ошибку.

>говорит "Ответ нулевой длины".
прямо в динамики, по-русски говорит?
 

RomikChef

Guest
И правда, впечатление, что ты издеваешься.
"я тут примерно накидал код и примерно сообщение об ошибке привел".
ОТГАДАЙТЕ, что у меня не работает?
Тыв ошибся адресом. Здесь не гадательный салон и не игра ЧТО ГДЕ КОГДА
 

_RVK_

Новичок
Сотни извинений. Мало опыта общения в форумах. Но я не знаю точно где ошибка. Сам скрипт большой. К ниму ешё класс написанн. XML документ... Если я это всё здесь приведу это как раз и будет издевательством. Поэтому я выдрал то что там реально происходит. Вот ответ сервера.

ОШИБКА
Запрошенный URL не может быть доставлен
--------------------------------------------------------------------------------
Во время доставки URL: http://soff.ifrigate.ru/scanner.php

Произошла следующая ошибка:

Ответ нулевой длины
Кэш не получил никаких данных в ответ на этот запрос.
--------------------------------------------------------------------------------
Generated Tue, 04 Mar 2003 10:52:13 GMT by if8 (squid/2.5.STABLE1)

В скрипте происходит следующее:
Читается XML документ следующего содержания:
<?xml version="1.0"?>
<site-list>
...

<site ID="1" title="" url="sex-offender.vsp.state.va.us">
<file httpversion="1.0" name="/Cool-Ice/default.asp" fields="name,address,city,state,zip,county,photo">
<regexp funct="match" id="1"><![CDATA['(<a.*?&RRG.*?target=\"_top\">.*?</a>|<td nowrap><font size="2">.*?</td>)'si]]></regexp>
<regexp funct="replace" id="2"><![CDATA['(<a.*\">|<td nowrap><font size="2">|</a>|</td>|</tr>|<tr>)'si]]></regexp>
<param key="Category" value="VSP" method="GET"/>
<param key="Service" value="VSP_SOF_LST" method="GET"/>
<param key="cnt" value="ACCOMACK_CO" method="POST"/>
<param key="spg" value="1" method="POST"/>
</file>
</site>

...
</site-list>

На основании этих данных строится запрос на сайт. Открывается сокет. Посылается туда запрос и читается ответ. Ответ парсится и в перспективе заносится в базу. После этого переходим к следующему сайту. Повторяю. Под Win всё работает.
 

_RVK_

Новичок
Решил проблему... Когда читаю из сокета fread() то не работает... Читаю построчно - работает. Почему так и не понял. Может кто подскажет.
 
Сверху