[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: авторизация с curl работает.
Origin_
есть скрипт some.php вначале в нем идет авторизация на каком-то сайте через curl, и проходит успешно. далее хочу воспользоваться поиском, использую эту конструкцию:
PHP
curl_setopt($ch, CURLOPT_URL, "http://site.com/search.php?name=q");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
$result = curl_exec($ch);
curl_close($ch);
echo "777" .$result ."777";


запуская скрипт, получаю страницу поиска.
а внизу
7771777

то есть в переменную почему-то вся страница не заносится, также необходимо, чтобы страница , которая выводится функцией curl_exec($ch); не выводилась. хотя вприцнипе не суть, но хотелось бы smile.gif
и вот с получением кода страницы в переменную подскажите плиз
заранее спасибо



Спустя 1 час, 22 секунды (26.01.2009 - 23:38) kirik написал(а):
Включите CURLOPT_RETURNTRANSFER, тоесть поменяйте 0 на 1 -
PHP
curl_setopt($chCURLOPT_RETURNTRANSFER1);

Тогда код страницы будет возвращаться в переменной $result, и следовательно выводиться между 7-ками.

Спустя 14 минут, 16 секунд (26.01.2009 - 23:52) Origin_ написал(а):
спасибо, я и предполагал , что все так просто )))
еще вопрос, такая конструкия будет верна?
PHP
//авторизация
curl_setopt($ch, CURLOPT_URL, "http://site.com/search.php?name=1");

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($ch);
//парсинг

curl_setopt($ch, CURLOPT_URL, "http://site.com/search.php?name=2");

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($ch);
//парсинг
curl_close($ch);


или нада перед 2ым обращением к странице что-то еще дописать?

Спустя 28 минут, 8 секунд (27.01.2009 - 00:20) kirik написал(а):
Origin_, подобная конструкция не вернет вам код обеих страниц. Для каждой страницы нужно инициализировать отдельный сеанс.
тоесть как-то так -
PHP
// страницы, которые будем сливать
$pages = array('http://site.com/search.php?name=1', 'http://site.com/search.php?name=2');

// цикл для каждой из страниц
for($i = 0, $c = count($pages); $i < $c; $i++)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $pages[$i]);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $results[$pages[$i]] = curl_exec($ch);
    curl_close($ch);
}

// получаем результат ввиде ассоциативного массива $results ['адрес страницы' => 'контент страницы']


Только учтите то, что время обработки всех страниц(если их много) может привышать php-шный лимит.
Я бы посоветовал разобраться немного с perl-ом для подобных вещей.

Спустя 19 часов, 24 минуты, 55 секунд (27.01.2009 - 19:45) Origin_ написал(а):
благодарю!
лимит превысить.. это 30 секунд типо по дефолту. вроде его можно увеличить. вообще в день максимум по 20-30запросов будет. и то неделю-две.. далее будет по 1-2 страницы smile.gif думаю хватит.
а не знаете, уступает ли по скорости использование curl , перед использованием сокетов. возможно, использование сокетов более подабает этикету?) под сокетами я подразумеваю использовать fsockopen , и далее разгребать заголовки волзвращаемые и т.д..
может через сокеты лучше всё сделать?

Спустя 25 минут, 56 секунд (27.01.2009 - 20:11) kirik написал(а):
Цитата (Origin_ @ 27.01.2009 - 11:45)
уступает ли по скорости использование curl , перед использованием сокетов


По скорости - я не заметил что сокеты быстрее (хотя курл может быть медленнее, потому как в нем больше всего предусмотренно, - правильно работает с заголовками, без проблем с проксями), а вот нагружает серв он больше чем сокеты. Все зависит от ситуации. Хотя если вы разобрались с сокетами, то лучше использовать их =)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.