Mr.KTO blog

QRL (Quick URL) class

Небольшая презентация моего класса для работы с HTTP.

require_once("inc/qrl.php");
$req = new qrl;
print $req->submit_request("http://www.google.com/") or exit("Ошибка");

Более сложный пример:

require_once("inc/qrl.php");
$req = new qrl;  

$req->error_reporting = 1;
/* класс позволяет определить, если случилась ошибка Вы всегда можете
   проверить $req->last_error и $req->last_errno (текст и код ошибки).
   $req->error_reporting определяет выводить ли сообщение об ошибке
   Также можно настроить вывод только error/warning/notice-типов ошибок,
   показывать статус-сообщения (напр. редиректы).
*/
$req->clear_log_dir();
/* по умолчению, если существует директория inc/logs/,
   то все запросы записывются в файлы вида 2007-06-15_19-17-18.htm
   qrl::clear_log_dir() очищает эту папку
*/
$req->use_curl = QRL_AUTO;
/* класс поддерживает сокеты и curl. Т.к. сокеты более распостранены,
   но обычно нет поддержки ssl-сокетов, то по умолчанию (QRL_AUTO) -
   для http используются сокеты, для https - cURL
*/     

// необязательно (см. умолчания в классе), но можно также настроить:     

$req->proxy = "123.45.67.233:8080"; // прокси в формате адрес:порт
$req->connect_timeout = 30; // таймаут соединения
$req->timeout = 3*60;       // макс. время получения данных
$req->only_header = false;  // получить только хидер (приём останавливается)
$req->max_redirs = 5;       // макс. число автоматич. редиректов (0-откл.)     

$req->accept = "image/gif, image/jpeg, */*"; // хидер Accept
$req->accept_language = "en";       // хидер Accept_language и User_agent
$req->user_agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";     

$req->log_dir = "inc/logs"; // директория для логгинга запросов
$req->logging = 1; // логгинг, 1 (QRL_YES) - создать, если не существует     

// А теперь делаем POST-запрос на http://www.host.com/page.php?p=1:
$req->referer = "http://www.host.com/";
$req->submit_request("http://www.host.com/page.php?p=1", "id=123&on=333");     

if ($req->last_errno) exit("Ошибка при запросе.");
echo $req->p_content; // выводим контент полученной странички
// также можно посмотреть хидер, статус код, статус сообщение

ПРОДОЛЖЕНИЕ СЛЕДУЕТ
(задавайте вопросы, спрашивайте что показать)

Класс распостраняется только с моими разработками. Стоимость проектов от $50.

habrahabr.ru google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru rumarkz.ru memori.ru moemesto.ru moikrug.ru myscoop.ru mister-wong.ru rucity.com vaau.ru

Комментарии (3) на “QRL (Quick URL) class”

  1. Seo Красавчег пишет:

    Ну вроде все понятно

  2. microsoft пишет:

    это типа для тех, у кого CURL не работает ?

  3. mrkto пишет:

    Сначала я оформлял всё как функции с передачей аргументов по ссылке.
    Была функция для парсинга и исправления url (как parse_url),
    функция парсинга html-тэгов (разбора по аттрибут=>значение),
    функция для отправки запроса (с поддержкой cookie, referer).

    Для каких-то клиентов я делел всё на сокетах, кому-то нужна была поддержка https (а сокеты с поддержкой ssl встречаются реже, чем поддержка cURL). При этом код с cURL-ом ненамного отличался по размеру от кода для сокетов.

    Потом я пришёл к тому, что лучше всё это объеденить в один класс. Так появился qrl. По умолчанию для http он использует сокеты, для https - cURL.

    Позже я добавил метод для сабмита форм по её имени с подстановкой соотв. полей. Создал доп. класс для управлением ошибками (class qrl extends err_class {).

    Подобные классы уже есть, напр. Snoopy, но я категорически не приемлю чужих разработок.

    Далее я создал класс для многопоточной отправки запросов с помощью неблокирующих сокетов. Этот класс использует объекты класса qrl для каждого запроса. В PHP5 есть curl_multi, но у него один недостаток - нельзя добавить новый поток пока не отработали все предыдущие.

    В итоге получился очень удобный инструмент для работы с HTTP. По крайней мере для меня.

Оставить комментарий