HTTP. Часть 2. Программные библиотеки РНР для работы с HTTP

Когда вы начнете работать с содержимым по сети через HTTP, то вскоре обнаружите, что, несмотря на то, что РНР делает определенные вещи легко, он не реализует их в полной мере.

В частности, хотя средство потоков РНР Streams позволяет довольно просто получать доступ к ресурсам HTTP, как если бы они были файлами, оно не дает возможности получить доступ к метаинформации, такой как коды ответа транзакций HTTP. Точно так же и встроенные команды РНР не позволяют устанавливать требуемые свойства транзакций HTTP наподобие пользовательского агента.

Чтобы получить доступ к этому виду метаинформации, вы должны обратиться к более сложным аспектам программирования HTTP. Для этого имеется несколько кандидатов, включая Curl, Snoopy и HttpClient.

Curl — это связка РНР со стандартной библиотекой Curl из Unix, которая реализует сетевой ввод и вывод TCP/IP. Хотя Curl обладает всеми преимуществами встроенной в РНР библиотеки — удобство, простота и скорость — она все же не является стандартной частью инсталляции РНР. И хотя ее легко встроить в РНР, для этого потребуется перекомпилировать РНР, что не всегда возможно для разработчиков на РНР.

В частности, если вы работаете в распределенной среде, ваш поставщик услуг Internet может быть не готов (или не захочет) перекомпилировать РНР для поддержки Curl.
Более подробную информацию о Curl можно найти по следующему адресу:
http://php.net/manual/en/ref.curl.php
Curl — это официальная часть РНР, хотя и одна из тех, что не всегда с ним устанавливается.

Существуют также библиотеки HTTP от независимых разработчиков, написанные полностью на РНР, которые могут использоваться без необходимости внесения изменений в текущую инсталляцию РНР. Хотя эти библиотеки и не столь быстры, как Curl, для большинства приложений их оказывается более чем достаточно. Вдобавок их легко использовать, к тому же, учитывая возможность их развертывания с любой инсталляцией РНР, можно сказать, что это серьезный аргумент в их пользу.

Двумя представителями таких библиотек являются Snoopy и HttpClient.

Snoopy, которую можно найти на http://snoopy.sf.net/, — это более старая библиотека, хотя и обладающая полной функциональностью, но уже не так активно поддерживаемая. Она обеспечивает полную функциональность HTTP, имеет простой объектно-ориентированный интерфейс, однако ее документация не полна.

Более новая библиотека — HttpClient (http://scripts.incutio.com/httpclient/ ) — и хорошо поддерживается, и имеет полную документацию.

Для примеров этого раздела мы будем использовать библиотеку HttpClient.

Для самых продвинутых пользователей библиотек РНР для работы с HTTP рекомендую обзоры про самые серверные Linux дистрибутивы: от Slax до Mandriva Linux на http://www.tuxes.ru