Curl based HTTP Client vs. Snoopy

03 Июл 2009

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

Задачу «отправить POST- или GET-методом данные и получить результат через прокси» взялись выполнить два PHP-класса.

PHPCurl 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 в пределах погрешности. Так что можно пользоваться любым из них.






 

Dragan Dinic     .

Написано 3 июля 2009 года в 15:28


Hello Vladimir,

Thanks for reviewing my Curl based HTTP client class.

We use it literaly everyday for spidering sites etc. and it suit all our needs, but in case you think there are more features that should be developed, feel free to leave your comments on my blog.

Thanks,
Dinke

 

Жилинcкий Владимир     .

Написано 3 июля 2009 года в 15:52


Hi! I have not yet found any missing features =)

 

baybekov     .

Написано 3 июля 2009 года в 17:42


Получить содержание сайта через прокси, можно и с помощью file_get_contents

$aContext = array(
‘http’ => array(
‘proxy’ => ‘tcp://127.0.0.1:8080’,
‘request_fulluri’ => True,
),
);
$cxContext = stream_context_create($aContext);
$sFile = file_get_contents(«http://www.php.net», False, $cxContext);

echo $sFile;

 

Жилинcкий Владимир     .

Написано 3 июля 2009 года в 17:44


Точно, тоже можно померять по скорости и сравнить с curl и fsockopen.

 

Алексей Качаев     .

Написано 3 июля 2009 года в 22:25


На php.ru/forum пол года назад (или больше) поднимали тему сравнения скорости curl, сокетов и file_get_contents. Там на столько маленькая разница в скорости, что на замерах потеряешь больше, чем выиграешь от использования более быстрой.

Лично я пользуюсь собственной оберткой для curl с удобно реализованной многопоточной работой — в этом curl нет равных :)

 

Eugene Che     .

Написано 4 июля 2009 года в 11:09


Иногда случается что хостер запрещает пользоваться сокетами, это очень огорчает. Напимер Агава на виртуалках. Сильно раздражает. А в целом такой подход помоему использует и вордпресс. По крайней мере снупи в нем есть.

 

Жилинcкий Владимир     .

Написано 4 июля 2009 года в 16:51


Агава — хостер? Мсье знает толк в извращениях =)

 

Пётр М.     .

Написано 6 июля 2009 года в 11:49


Результаты вполне логичны. Bottleneck здесь скорость доступа к удаленному серверу.

 

ZonaS     .

Написано 10 июля 2009 года в 16:36


Ребята но вы не учитывали загруженность прокси. Причем такие замеры надо проводить на серверах.
Качаев если бы все сервисы так поступали как ты думаешь, то большинство сайтов отдавало бы ответ %)) (500 error).
Проверять скорость обработки данных нужно всегда и всюду. Или в противном случае тебе прямая дорого в Майкрософт.

 

Жилинcкий Владимир     .

Написано 12 июля 2009 года в 16:55


Эти замеры проводились на сервере Host Europe.

 


[…] коммент в этом посте This entry was posted in PHP. Bookmark the permalink. ← Как накачать […]

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

You must be logged in to post a comment.

© 2007-2010 Блог интернет-разработчика, автор — Zhilinsky.ru.
При использовании информации ссылка на источник обязательна.