클라이언트 URL 라이브러리

클라이언트 URL 라이브러리 (Client URL Library, cURL)

PHP에서 HTTP 요청을 보내야 할 때 가장 먼저 떠오르는 확장이 바로 cURL이에요. 이 확장은 Daniel Stenberg가 만든 libcurl 라이브러리를 PHP에서 쓸 수 있게 해 주는데, http, https, ftp 같은 다양한 프로토콜로 여러 종류의 서버에 연결하고 통신할 수 있게 해 줘요.

출처: Client URL Library

본문

소개

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 session
  • curl_copy_handle — Copy a cURL handle along with all of its preferences
  • curl_errno — Return the last error number
  • curl_error — Return a string containing the last error for the current session
  • curl_escape — URL encodes the given string
  • curl_exec — Perform a cURL session
  • curl_getinfo — Get information regarding a specific transfer
  • curl_init — Initialize a cURL session
  • curl_multi_add_handle — Add a normal cURL handle to a cURL multi handle
  • curl_multi_close — Remove all cURL handles from a multi handle
  • curl_multi_errno — Return the last multi curl error number
  • curl_multi_exec — Processes each of the handles in the stack
  • curl_multi_getcontent — Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set
  • curl_multi_info_read — Get information about the current transfers
  • curl_multi_init — Returns a new cURL multi handle
  • curl_multi_remove_handle — Remove a handle from a set of cURL handles
  • curl_multi_select — Wait until reading or writing is possible for any cURL multi handle connection
  • curl_multi_setopt — Set a cURL multi option
  • curl_multi_strerror — Return string describing error code
  • curl_pause — Pause and unpause a connection
  • curl_reset — Reset all options of a libcurl session handle
  • curl_setopt — Set an option for a cURL transfer
  • curl_setopt_array — Set multiple options for a cURL transfer
  • curl_share_close — Close a cURL share handle
  • curl_share_errno — Return the last share curl error number
  • curl_share_init — Initialize a cURL share handle
  • curl_share_init_persistent — Initialize a persistent cURL share handle
  • curl_share_setopt — Set an option for a cURL share handle
  • curl_share_strerror — Return string describing the given error code
  • curl_strerror — Return string describing the given error code
  • curl_unescape — Decodes the given URL encoded string
  • curl_upkeep — Performs any connection upkeep checks
  • curl_version — Gets cURL version information

클래스 참조

  • CurlHandle — The CurlHandle class
  • CurlMultiHandle — The CurlMultiHandle class
  • CurlShareHandle — The CurlShareHandle class
  • CurlSharePersistentHandle — The CurlSharePersistentHandle class
  • CURLFile — The CURLFile class
  • CURLFile::__construct — Create a CURLFile object
  • CURLFile::getFilename — Get file name
  • CURLFile::getMimeType — Get MIME type
  • CURLFile::getPostFilename — Get file name for POST
  • CURLFile::setMimeType — Set MIME type
  • CURLFile::setPostFilename — Set file name for POST
  • CURLStringFile — The CURLStringFile class
  • CURLStringFile::__construct — Create a CURLStringFile object

더 알아보기

  • 단순히 파일을 읽거나 쓰는 용도라면 file_get_contents() 같은 파일시스템 함수나 ftp:// 래퍼도 고려할 수 있어요. 하지만 헤더 조작, 인증, 멀티 요청 같은 세밀한 제어가 필요하면 cURL이 훨씬 강력해요.
  • 여러 요청을 동시에 처리하려면 curl_multi_* 계열 함수를 알아두면 좋아요.