Профессиональная разработка Web-приложений.  
Боишься нашего дизайна?
Новости
PDF журнал
Участники проектa
Сотрудничество
Ссылки
Карта сайта
Комментарии
Комментарии к статье
Добавить комментарий
Обсудить на форуме
Информация об авторе
Оценка статьи

Применение cURL и libcurl в php

Оригинал статьи доступен по адресу http://zend.com/zend/tut/tutorial-thome3.php

Вступление

Это руководство предназначено для тех web-разработчиков, которые хотят автоматизировать передачу файлов по сети либо взаимодействовать с другими Интернет - сервисами. Для чтения этой главы вам необходимо владеть пониманием принципа работы стратегии клиент - сервер и знать основы синтаксиса PHP.

cURL и libcurl - библиотеки, позволяющие серверу передавать файлы на удаленный компьютер, используя множество Интернет протоколов. Библиотеки имеют очень гибкую настройку и позволяют выполнить практически любой удаленный запрос. Используя их, web-сервер может выступать полноценным клиентом любого основанного на HTTP протоколе сервисе, к примеру: XML-RPC, SOAP, или WebDAV.

В этой статье будет рассказано о том, что такое cURL, как его использовать из командной строки, и о его применении в PHP.

Что такое cURL и libcurl

cURL является сокращением от "Client URLs". Он был разработан Daniel Stenberg в 1998 году как утилита, работающая из командной строки. Libcurl - переносимая библиотека, предоставляющая простой API-интерфейс к функциональности cURL. Библиотека безопасна в мультипоточной среде, совместима с IPv6 и поддерживает постоянные соединения. Интерфейс взаимодействия с php был добавлен Sterling Hughes.

cURL и libcurl могут использоваться для передачи информации с использованием таких протоколов, как HTTPS, FTP, FTPS, GOPHER, LDAP, DICT, TELNET и FILE. Реализована поддержка практически всех *nix систем, а также Windows, OS/2, BeOS и некоторых других.

Библиотека curl - Open Source продукт с оригинальной MIT/X лицензией, позволяющей использовать этот пакет в любых: как коммерческих, так и некоммерческих целях, включать ее в свой дистрибутив (даже если он распространяется без открытого исходного кода).

Необходимо понимать, что cURL не имеет ничего общего с Curl Corporation, являющейся коммерческим производителем языка программирования Curl.

Инсталляция cURL

Для работы в PHP версии 4.2.3 и выше вам необходим cURL версии не ниже 7.9.0. Для работы в PHP версии 4.3.0 и выше вам необходим cURL версии не ниже 7.9.8.

Windows

Как и любой другой дополнительный модуль, он требует проинсталлированного дистрибутива PHP. Для установки cURL скопируйте файлы php4ts.dll, ssleay32.dll, php_curl.dll, msvcrt.dll из каталога DLL в системную директорию Windows, как правило, это:

c:\windows\system для Windows 9x/Me
c:\winnt\system32 для Windows NT/2000
c:\windows\system32 для Windows XP.

После этого необходимо раскомментировать строку

;extension=php_curl.dll

в файле php.ini, либо подгружать модуль динамически, во время работы скрипта.

<?php 
dl
("php_curl.dll"); 
?> 

Unix

Ближайшее зеркало, содержащее исходные коды и откомпилированные бинарные файлы для различных операционных систем, вы можете найти на сайте http://curl.haxx.se/.

Поскольку cURL использует библиотеку openssl для SSL соединений, вначале необходимо установить на север SSL. В случае, если при инсталляции cURL библиотека openssl найдена не будет, произойдет установка cURL без поддержки SSL соединений.

Инсталляция cURL состоит из следующих шагов: ./configure, make, make install.

После этого необходимо пересобрать PHP c опцией --with-curl

О том, включена ли поддержка cURL в php, вы можете узнать, выполнив phpinfo().

Пример использования cURL

Использование cURL из командной строки очень просто. Следующий пример запрашивает web-страницу и выводит ее в stdout

$ curl -L zend.com
M(опция -L разрешает переадресации)

Также возможно использование cURL из командной строки при помощи PHP. Следующий пример запрашивает 3 страницы и выводит их на экран

<?php 
$var 
= echo shell_exec("/usr/bin/curl -L http://www.zend.com http://zend.com/developers.php http://zend.com/zend/tut/"); 
?>

Пример использования cURL в PHP

Использование libcurl в php-скрипте является достаточно простым, особенно для таких операций, как генерация POST-запросов.

Для использования libcurl необходимо выполнить следующие шаги:

  • Инициализировать сессию cURL
  • Установить опции cURL (порядок установки опций не имеет значения)
  • Выполнить запрос
  • Завершить сессию cURL

Для демонстрации вышеперечисленного приведем практические примеры использования cURL для генерации POST-запроса, HTTP-авторизации, FTP-сессии.

<?php 
// Поиск книг на сервере amazon.com
$url "http://www.amazon.com/exec/obidos/search-handle-form/002-5640957-2809605"
$ch curl_init(); 
curl_setopt($chCURLOPT_URL,$url); // set url to post to 
curl_setopt($chCURLOPT_FAILONERROR1); 
curl_setopt($chCURLOPT_FOLLOWLOCATION1);// allow redirects 
curl_setopt($chCURLOPT_RETURNTRANSFER,1); // return into a variable 
curl_setopt($chCURLOPT_TIMEOUT3); // times out after 4s 
curl_setopt($chCURLOPT_POST1); // set POST method 
curl_setopt($chCURLOPT_POSTFIELDS"url=index%3Dbooks&field-keywords=PHP+MYSQL"); // add POST fields 
$result curl_exec($ch); // run the whole process 
curl_close($ch);  
echo 
$result
?>

<?php 
// HTTP authentication 
$url "http://www.example.com/protected/"
$ch curl_init();     
curl_setopt($chCURLOPT_RETURNTRANSFER1);  
curl_setopt($chCURLOPT_URL$url);  
curl_setopt($chCURLOPT_USERPWD"myusername:mypassword");  
$result curl_exec($ch);  
curl_close($ch);  
echo 
$result
?> 

<?PHP 
// FTP this script to a server 
$fp fopen(__FILE__"r"); 
$url "ftp://username:password@mydomain.com:21/path/to/newfile.php"
$ch curl_init();     
curl_setopt($chCURLOPT_URL$url);  
curl_setopt($chCURLOPT_RETURNTRANSFER1);  
curl_setopt($chCURLOPT_UPLOAD1);  
curl_setopt($chCURLOPT_INFILE$fp);  
curl_setopt($chCURLOPT_FTPASCII1);  
curl_setopt($chCURLOPT_INFILESIZEfilesize(__FILE__));  
$result curl_exec($ch);  
curl_close($ch);  
?>

При возникновении проблем в использовании cURL необходимо добавить следующие строки перед вызовом curl_close для получения отчета о последнем выполненном запросе:

<?php  
print_r
(curl_getinfo($ch));  
echo 
"\n\ncURL error number:" .curl_errno($ch);  
echo 
"\n\ncURL error:" curl_error($ch);  
// ...close cURL handle ($ch) below 
?> 

Решение о том, что использовать: cURL или libcurl, - стоит принимать в зависимости от обстоятельств. В случае, если Вы пишете выполняемый из командной строки скрипт, либо у Вашего провайдера нет поддержки libcurl, имеет смысл использовать cURL. В остальных случаях использование libcurl оказывается более удобным.




For comment register here
   2003-11-14 15:59

   2003-11-17 10:38

   2004-05-17 07:03

   2004-05-18 11:50

   2004-07-18 04:45

   2005-07-29 10:28

   2005-08-10 12:30

Применение cURL и libcurl в php

 
 
 
    © 1997-2008 PHPClubTeam
[]