Как с помощью сокетов прочитать несколько страниц незакрывая сокета???

Little MeN

Новичок
Как с помощью сокетов прочитать несколько страниц незакрывая сокета???

PHP:
<?php
$addres = "cartman.ganjawars.ru";
$cookie="uid=396177;up=c405a9;bp=d144c0;au=396177;luid=396177";
$port = 80;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, $addres, $port);
$result = "";
$id = "17547";
$path = "/object.php?id=".$id;
socket_write($socket, "GET ".$path." HTTP/1.1\r\nCookie: ".$cookie."\r\nHost: cartman.ganjawars.ru\r\nConnection: keep-alive\r\n\r\n");
while($read = socket_read($socket, 1024)){
    $result .= $read;
}
echo "---|".$result."|----|";
$result = "";
$id = "36358";
$path = "/object.php?id=".$id;
socket_write($socket, "GET ".$path." HTTP/1.1\r\nCookie: ".$cookie."\r\nHost: cartman.ganjawars.ru\r\n\r\n");
//socket_write($socket, "GET ".$path." HTTP/1.0\r\nCookie: ".$cookie."\r\n\n");
while($read = socket_read($socket, 1024)){
    $result .= $read;
}
echo "---|".$result."|----|";
socket_close($socket);
?>
пробовал во так непашет.... на второй запрос выдаёт пустоту...хоть и используется протокол 1.1 почему глухо....


подскажите как можно реализовать чтение с одного и того же хоста по одному и томуже пути нескольких страниц не закрывая сокета?

-~{}~ 25.04.06 00:28:

мдя.... просмотров темы много...ток чёт ответов не видно(((( что никто не знает?!?!?!?

-~{}~ 25.04.06 00:41:

Народ ну в самом деле помогите!!! очень надо организовать потоковое чтение полусотни страниц за один присест как говориться с передачей кукисов, если читать с закрытием сокета то на 3-5 странице сервер тормозит жестоко до 20ти секунд, хотелось бы испытать на одном едминственном подключении, но почемуто не получается.... что может быть не так? думал протокол не верный - исправил 1.1 использую...от fsocketopen отказался, ибо очень медленно... напрямую через сокеты быстрее, но млин сволоч молчит после второго запроса - первый всё путём а на второй сразу после первого ничего не выдаёт - пустоту, есть мысль что сервер к которому подключаюсь после ответа на запрос отключается, но поидее такого быть не должно - кип-алив же пердаю... мли ну подскажите хоть ктонить чттонить.... может есть другие методы с передачей куков прочитать с др. хота пачку страниц быстро?!?!?!?!
 

vadim

Guest
Почитайте насчёт keep-аlive: http://www.io.com/~maus/HttpKeepAlive.html

Я думаю, его надо вообще убрать

-~{}~ 25.04.06 03:24:

Сервер кстати не обязан слушаться ваших headers. Действия по стандарту - это акт доброй воли, вполне возможно, что сервер настроен так, что он только одно соединения за раз принимает

-~{}~ 25.04.06 03:29:

Кстати, в самих сокетах есть настройка SO_KEEPALIVE, возможно не сервер виноват, а собственный сокет
 

Little MeN

Новичок
vadim
вариант с возможной настройкой сервера на одно соединение меня не обрадовал.... а вот через опции настроить keep alive попробую...
Сергей Тарасов
я неспец в вопросе работы с сокетами, можно чуть чуть поподробнее вы имели ввиду так?:
PHP:
socket_set_option($socket,SOL_SOCKET,SO_KEEPALIVE,300);
или какое значение нада воткнуть?


...ксожалению незаработало(((( или я неправильно настраиваю опцию, или что хуже для меня срвер действительно отключается самостоятельно после первого запроса....

-~{}~ 26.04.06 03:39:

глухо вобщем, после попытки установить значение 300 устанавливается реальное значение 8, но и это не помогает - на второй запрос по прежнему пустышка(((

-~{}~ 26.04.06 04:01:

навтфкал опрос ошибок - ошибок нет, и это самое странное!!!
 

vadim

Guest
Little MeN
А вы пробывали в первом запросе вообще без Connection: keep-alive ?? Может что нибудь сервер отвечает??
У меня тоже была подобная проблема и её тогда только двумя разными сокетами решил (что естественно, не очень хорошо).

Можно попробывать ещё расширением CURL попользоваться, там я вроде видел, что делали одним сокетом несколько HTTP запросов
 

Little MeN

Новичок
vadim
HTTP/1.1 200 OK Date: Wed, 26 Apr 2006 19:07:24 GMT Server: Apache/1.3.33 (Unix) mod_deflate/1.0.21 PHP/4.2.3 X-Powered-By: PHP/4.2.3 Expires: 0 Pragma: no-cache Last-Modified: Wed, 26 Apr 2006 23:07:24 GMT Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=windows-1251

вот что отвечает сервер....

хммм, посмотрю что за расширение может поможет....
 
Сверху