Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сокеты

9.9K
09 декабря 2006 года
Данила
38 / / 25.10.2006
Вызываеться функция:

 
Код:
::
$it=true;
while($it)
{
 $link_to_top10 = $yandex->get('/page.php?text=параметр');

// условие при котором $it=false;
}


Вот она сама:

Код:
function get($query)
      {
         $result = '';
         $server_ip = 'www.yandex.ru';
         $server_port = '80';
         $host = 'www.yandex.ru';

         $s = fsockopen($server_ip, $server_port);
         fputs ($s, "GET $query HTTP/1.0 \n");
         fputs ($s, "Connection: Keep-Alive \n");
         fputs ($s, "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98) \n");
         fputs ($s, "Host: $host\n");
         fputs ($s, "Accept: */*\n");
         fputs ($s, "Accept-Language: en \n");
         fputs ($s, "Referer: http://yandex.ru\n");
         fputs ($s, "Content-type: * \n");
         fputs ($s, "Pragma: no-cache\n");
         fputs ($s, "Cache-Control: no-cache\n");
         fputs ($s, "Connection: close\n\n");

         
         while (!feof($s)) $result .= fgets($s, 1000000);
         if(strpos("TTP/1.1 404 Not FoundDate:",$result)) $result=false;
         return  $result;
         fclose($s);
         unset($result);
         unset($s);
      }


Мы к одной и той же странице в "Яндексе-результаты поиска" делаем несколько запросов, меняя параметр, при этом выводиться по 50 сайтов на страницу. Проблема в том, что скрипт делает 3 запроса и прекращает свою работу. Самое интересное, что если поставить по 10 сайтов на страницу то скрипт делает 10 запросов и умирает.

Данные возвращаються целыми, тоесть не обрывками. Пробовал после каждого запроса тормозить скрипт - sleep(10); - непомогло

Никаких ограничений в самом скрипте нет, тоесть по идеи он должен пролистать 10 страниц, но больше 3 страниц смотреть не хочет.


В чем может быть дело?
(cURL неподходит в виду его отсутствия на сервере)
19K
09 декабря 2006 года
Morbid
3 / / 22.07.2006
Кстати тоже давно сталкивался с подобной проблемой, потом через курл зомутили, мошт кто поможет?
9.9K
09 декабря 2006 года
Данила
38 / / 25.10.2006
Слух.. а как этот запрос можно cUrl'ом заменить? Неохото прямо говоря щас лезть в мануалы - надо скрипт сегодня дописать. Подскажи, буду благодарен.

P.S тем не менее вопрос не снимаеться =)). Давайте думать в чем дело.
7.3K
09 декабря 2006 года
JB13
64 / / 05.09.2005
Намного проще и стабильнее использовать расширение PEAR - Request.php.
9.9K
09 декабря 2006 года
Данила
38 / / 25.10.2006
Так что, с cURL поможет кто?)
256
10 декабря 2006 года
foxweb
1.0K / / 27.07.2005
Цитата: Данила
Так что, с cURL поможет кто?)


я помогу ) вот элементарная функция:

 
Код:
function result($url)
{
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_INTERFACE, "195.225.176.138");
  $buf = curl_exec($ch);
  curl_close($ch);
  return $buf;
}


на входе - URL, на выходе - выдача по URL. что непонятно - спрашивайте.
9.9K
10 декабря 2006 года
Данила
38 / / 25.10.2006
Выдает ошибку:

 
Код:
Bad Request
Your browser sent a request that this server could not understand.

client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /


Скрипт:

Код:
$header[] = "GET $query HTTP/1.0 \n";
$header[] = "Connection: Keep-Alive \n";
$header[] = "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98) \n";
$header[] = "Host: www.yandex.ru \n";
$header[] = "Referer: http://yandex.ru \n";
$header[] = "Accept: text/html\n";
$header[] = "Cache-Control: no-cache\n";
$header[] = "Connection: close \n\n";
         
$url = "http://yandex.ru";  
$ch = curl_init($url);  
//curl_setopt($ch, CURLOPT_URL,$url); // set url to post to  
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$result = curl_exec($ch); // run the whole process  
curl_close($ch);  
 return  $result;



Где может быть ошибка?
271
10 декабря 2006 года
MrXaK
721 / / 31.12.2002
по-моему в мануале по курлу предупреждали что не стоит использовать CURLOPT_HTTPHEADER для полного формирования запроса...
попробуй
Код:
$header[] = "Connection: Keep-Alive \n";
$header[] = "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98) \n";
$header[] = "Host: www.yandex.ru \n";
$header[] = "Referer: http://yandex.ru \n";
$header[] = "Accept: text/html\n";
$header[] = "Cache-Control: no-cache\n";
$header[] = "Connection: close \n\n";
         
$url = "http://yandex.ru";  
$ch = curl_init();  
curl_setopt($ch, CURLOPT_URL,$url."/".$query); // set url to post to  
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$result = curl_exec($ch); // run the whole process  
curl_close($ch);


а лучше вообще все хедеры забей через CURLOPT соответствующие...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог