Curl based HTTP Client vs. Snoopy
11 комментариевНачалось всё с того, что мне захотелось получать некоторые данные не прямым запросом, а через прокси. Переписывать много кода пришлось бы в любом случае, но на популярные грабли наступать не хотелось.
Задачу «отправить POST- или GET-методом данные и получить результат через прокси» взялись выполнить два PHP-класса.
Curl HTTP Client — простая, но эффективная ООП-оболочка над библиотекой Curl. Содержит все методы, необходимые для получения данных со страниц, подмены referrer, авторизации, отправки POST-запросов, управления cookies и т.д.
Snoopy the PHP net client — PHP-класс, эмулирующий работу веб-браузера. Он автоматизирует получение содержимого страниц или, например, отправку форм. Запросы формирует функцией fsockopen().
Функции этих классов очень похожи. Оба они умеют получать содержимое страниц, отправлять любые значения полей User-agent и Refferer, передавать данные POST- и GET-методами, передавать Cookies, и ещё куча мелких бонусов у каждого класса.
Но работают они кардинально по-разному: одна использует системную библиотеку, а вторая PHP-функцию, поэтому я решил сделать замеры скорости для этих классов на одинаковой задаче.
Задача получилась такая: подключить класс, установить User-agent и Refferer, получить страницу с чужого сайта, вывести прошедшее время, повторить всё 100 раз.
Увы, результаты презентативными не оказались: классы показали одинаковую работу в одинаковое время с крошечным отрывом Snoopy в пределах погрешности. Так что можно пользоваться любым из них.