cURL
- Подробности
- Категория: PHP
- Просмотров: 131
Часто нужно делать отложенные операции на сайте, например, отправлять сообщения по времени, или скачать данные с сайта или другая эмуляция и в этом поможет данная библиотека...
Отдельно устанавливать cURL на сервер обычно не надо, если у вас, конечно, не отдельная сборка, а на openserver например она стоит уже в PHP встроена
Итак, чтобы пользоваться ею, надо сделать 4 шага:
- curl_init - инициализировать сессию
- curl_setopt - задать необходимые опции
- curl_exec - выполнить полученный запрос
- curl_close - завершить сессию
Итак сразу пример:
$ch = curl_init('https://google.com');
//curl_setopt (resource ch, string option, mixed value) - формула для задания опций
curl_setopt($ch, CURLOPT_HEADER, 1); // читать заголовок
curl_setopt($ch, CURLOPT_NOBODY, 1); // читать ТОЛЬКО заголовок без тела
// выполняем запрос и закрываем сессию:
$result = curl_exec($ch);
curl_close($ch);
echo $result;
Все опции есть тут https://www.php.net/manual/ru/function.curl-setopt.php
Примеры
1. Функция
<?php
function get_web_page( $url )
{
$uagent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14";
// инициализируем сессию - 1 шаг
$ch = curl_init( $url );
// 2 шаг - задаем опции
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // возвращает веб-страницу
curl_setopt($ch, CURLOPT_HEADER, 0); // не возвращать заголовки
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // переходить по редиректам
curl_setopt($ch, CURLOPT_ENCODING, ""); // обрабатывать все кодировки
curl_setopt($ch, CURLOPT_USERAGENT, $uagent); // получаем useragent
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // таймаут соединения
curl_setopt($ch, CURLOPT_TIMEOUT, 120); // таймаут ответа
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); // останавливаться после 10-ого редиректа
// 3 шаг - выполняем
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch ); // 4 шаг - закрываем сессию
$header['errno'] = $err; // если есть ошибка
$header['errmsg'] = $errmsg; // если есть ошибка, то тут вернет ее описание
$header['content'] = $content; // вернет контент страницы
return $header;
}
Используем данную функцию:
$result = get_web_page( "https://yandex.ru" ); if (($result['errno'] != 0 )||($result['http_code'] != 200)) { echo $result['errmsg']; } else { $page = $result['content']; echo $page; }
Попробуйте, все должно работать на ура, но, если введем несуществующий url , то выйдет ошибка.