pavel83
Новичок
xml.yandex.ru не отдает страницу целиком
Не могу получить с помощью сокетов от xml.yandex.ru целый ответ (обрубается в одном месте)
Создаю сокет - отправляю и читаю
Результат тут
Если сделать то же самое fget-ом все работает. Сокеты перестали корректно работать 5 дней назад на 3-х разных хостингах одновременно. Яша чтоли изменил что-то у себя, не пойму...
Есть идеи?
Не могу получить с помощью сокетов от xml.yandex.ru целый ответ (обрубается в одном месте)
Создаю сокет - отправляю и читаю
PHP:
<?php
$query='запрос';
$page=0;
$hostname="xmlsearch.yandex.ru";
$path="/xmlsearch/";
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock, $hostname, 80);
$data="<?xml version=\"1.0\" encoding=\"windows-1251\"?>
<request> <query>{$query}</query>
<groupings> <groupby attr=\"d\" mode=\"deep\" groups-on-page=\"20\" docs-in-group=\"1\" />
</groupings> <page>{$page}</page> </request>\r\n";
$headers="POST {$path} HTTP/1.0
Host: $hostname
Content-type: text/xml;
Content-length: ".strlen($data)."\r\n\r\n";
socket_write($sock, $headers.$data);
$txt='';
while(!@socket_last_error($sock)){
if($line=socket_read($sock,512,PHP_NORMAL_READ)){
$txt.=$line; } }
socket_close($sock);
$pos=strpos($txt,"\r\n\r\n");
$header_out=substr($txt,0,$pos);
$txt_out=substr($txt,$pos);
header($header_out);
$txt_out=substr($txt_out,strpos($txt_out,'<?xml'));
echo $txt_out;
?>
Если сделать то же самое fget-ом все работает. Сокеты перестали корректно работать 5 дней назад на 3-х разных хостингах одновременно. Яша чтоли изменил что-то у себя, не пойму...
Есть идеи?
)