클라이언트 URL 라이브러리
클라이언트 URL 라이브러리 (Client URL Library, cURL)
PHP에서 HTTP 요청을 보내야 할 때 가장 먼저 떠오르는 확장이 바로 cURL이에요. 이 확장은 Daniel Stenberg가 만든 libcurl 라이브러리를 PHP에서 쓸 수 있게 해 주는데, http, https, ftp 같은 다양한 프로토콜로 여러 종류의 서버에 연결하고 통신할 수 있게 해 줘요.
본문
소개
PHP는 Daniel Stenberg가 만든 libcurl 라이브러리를 지원해요. 이 라이브러리를 이용하면 다양한 프로토콜로 여러 종류의 서버에 연결하고 통신할 수 있죠. libcurl은 현재 http, https, ftp, gopher, telnet, dict, file, ldap 프로토콜을 지원해요.
libcurl은 HTTPS 인증서, HTTP POST, HTTP PUT, FTP 업로드(PHP의 ftp 확장으로도 할 수 있어요), HTTP 폼 기반 업로드, 프록시, 쿠키, 그리고 사용자+비밀번호 인증도 지원해요.
cURL은 보통 curl_init()으로 세션을 시작하고, curl_setopt()로 옵션을 지정한 뒤 curl_exec()로 실행하고, curl_close()로 정리하는 흐름으로 사용해요.
함수 참조
cURL Functions
curl_close— Close a cURL sessioncurl_copy_handle— Copy a cURL handle along with all of its preferencescurl_errno— Return the last error numbercurl_error— Return a string containing the last error for the current sessioncurl_escape— URL encodes the given stringcurl_exec— Perform a cURL sessioncurl_getinfo— Get information regarding a specific transfercurl_init— Initialize a cURL sessioncurl_multi_add_handle— Add a normal cURL handle to a cURL multi handlecurl_multi_close— Remove all cURL handles from a multi handlecurl_multi_errno— Return the last multi curl error numbercurl_multi_exec— Processes each of the handles in the stackcurl_multi_getcontent— Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is setcurl_multi_info_read— Get information about the current transferscurl_multi_init— Returns a new cURL multi handlecurl_multi_remove_handle— Remove a handle from a set of cURL handlescurl_multi_select— Wait until reading or writing is possible for any cURL multi handle connectioncurl_multi_setopt— Set a cURL multi optioncurl_multi_strerror— Return string describing error codecurl_pause— Pause and unpause a connectioncurl_reset— Reset all options of a libcurl session handlecurl_setopt— Set an option for a cURL transfercurl_setopt_array— Set multiple options for a cURL transfercurl_share_close— Close a cURL share handlecurl_share_errno— Return the last share curl error numbercurl_share_init— Initialize a cURL share handlecurl_share_init_persistent— Initialize a persistent cURL share handlecurl_share_setopt— Set an option for a cURL share handlecurl_share_strerror— Return string describing the given error codecurl_strerror— Return string describing the given error codecurl_unescape— Decodes the given URL encoded stringcurl_upkeep— Performs any connection upkeep checkscurl_version— Gets cURL version information
클래스 참조
CurlHandle— The CurlHandle classCurlMultiHandle— The CurlMultiHandle classCurlShareHandle— The CurlShareHandle classCurlSharePersistentHandle— The CurlSharePersistentHandle classCURLFile— The CURLFile classCURLFile::__construct— Create a CURLFile objectCURLFile::getFilename— Get file nameCURLFile::getMimeType— Get MIME typeCURLFile::getPostFilename— Get file name for POSTCURLFile::setMimeType— Set MIME typeCURLFile::setPostFilename— Set file name for POSTCURLStringFile— The CURLStringFile classCURLStringFile::__construct— Create a CURLStringFile object
더 알아보기
- 단순히 파일을 읽거나 쓰는 용도라면
file_get_contents()같은 파일시스템 함수나ftp://래퍼도 고려할 수 있어요. 하지만 헤더 조작, 인증, 멀티 요청 같은 세밀한 제어가 필요하면 cURL이 훨씬 강력해요. - 여러 요청을 동시에 처리하려면
curl_multi_*계열 함수를 알아두면 좋아요.