Curl в php
Table of Contents
cURL — это свободная кроссплатформенная служебная программа командной строки для передачи файлов по различным протоколам с синтаксом URL.
Использование cURL в php
При использовании под Windows лучше для надёжности скопировать файлы libeay32.dll и ssleay32.dll из папки с php в system32.
Представляет собой (не знаю, как всё устроено внутри, но как выглядит «наружу») объект, который инициализируется factory-функцией, после чего можно при помощи своеобразных сеттеров установить необходимые свойства, а потом запустить выполнение.
Использование:
1 2 3 4 5 6 7 8 9 |
$ch = curl_init("http://www.example.com/"); $fp = fopen("example_homepage.txt", "w"); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp); |
Т.е. все сводится к вызову curl_init, нескольким вызовам curl_setopt, затем curl_exec и curl_close.
Разберём эти функции подробнее (полный список — здесь):
curl_init
1 |
resource curl_init ([ string $url = NULL ] ) |
Инициализирует новую сессию и возвращает её дескриптор («создаёт объект»).
Опционально можно передать урл, тогда будет установлено свойство CURLOPT_URL (можно установить и позже).
curl_setopt
1 |
bool curl_setopt ( resource $ch , int $option , mixed $value ) |
Основная функция. Устанавливает «свойство» для указанного первым параметром «объекта».
resource $ch — дескриптор cURL-сессии
int $option — опция («свойство») (задаётся не целым числом, а предопределёнными константами)
mixed $value — значение.
Самое интересное здесь — эти самые предопределённые константы, в них вся сложность. Все они перечислены на официальном сайте, хоть и не по алфавиту немного.
curl_exec
1 |
mixed curl_exec ( resource $ch ) |
Выполняет cURL-запрос.
Возвращает обычно true/false, но если установлен параметр CURLOPT_RETURNTRANSFER, то при успешном выполнении вернёт ответ.
curl_close
1 |
void curl_close ( resource $ch ) |
Закрывает cURL-сессию и освобождает все ресурсы, в том числе и переданный $ch.
Вспомогательные функции:
curl_errno
1 |
int curl_errno ( resource $ch ) |
Возвращает номер ошибки или 0, если всё прошло хорошо.
curl_error
1 |
string curl_error ( resource $ch ) |
Возвращает описание ошибки или », если всё прошло хорошо.
curl_getinfo
1 |
mixed curl_getinfo ( resource $ch [, int $opt = 0 ] ) |
Можно передать параметр $opt (из констант).
Возвращает информацию о последнем обмене данными (короче, трансфере).
Если передан второй параметр, то возвращает строку, если нет — массив всех параметров.
Пример
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$ch = curl_init(); //задаём url curl_setopt($ch, CURLOPT_URL, "http://mysite:90/myuri"); //подделываем юзер-агента curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; 3305; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'); //переходить по редиректам, инициируемым сервером, пока не будет достигнуто CURLOPT_MAXREDIRS (если есть) curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //устанавливаем HTTP-заголовки (приходится устанавливать все, т.к. функция затирает дефолтные) $headers = array ( "Host: mysite:90", "Referer: http://mysite:90/anotherurl", "Accept: */*", "Accept-Charset: utf-8,windows-1251,*", "Accept-Language: ru" ); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //не включать заголовки ответа сервера в вывод curl_setopt($ch, CURLOPT_HEADER, false); //вернуть ответ сервера в виде строки curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); if (curl_errno($ch)) { //обработка ошибки, используя curl_error() } curl_close($ch); |
*Формат строк для массива HTTP-заголовков — такой же, как и в функции header()
Similar Posts
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.