PHP에서의 CURL TIMEOUT , POST 방식 전송에 대해서

2011. 10. 1. 16:49Development/Tip

아는 분들도 많을테지만, CURL 관련해서 2가지를 적어볼까 합니다. 

1) TIMEOUT 

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $sUrl); 
curl_setopt($curl, CURLOPT_USERAGENT, 'CURL request'); 
curl_setopt($curl, CURLOPT_TIMEOUT, 5); 
if($method == 'post') { 
    curl_setopt($curl, CURLOPT_POST, 1); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, $aReq); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
$sRes = curl_exec($curl); 
$sHttpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); 
curl_close($curl); 


위는 CURL 을 요청소스입니다. 

TIMEOUT 옵션을 대부분 1개만 사용중이실텐데, 
명확한 처리를 위해서 CURLOPT_CONNECTTIMEOUT 옵션을 추가해주시면 좋습니다. 

CURLOPT_TIMEOUT => curl 실행에 대한 timeout 
CURLOPT_CONNECTTIMEOUT => 서버연결에 대한 timeout 

----------------------- 

2) POST 방식전송시 유의사항 

POST 방식으로 전송시 위 소스에서처럼 array형 변수를 넘겨도 PHP에서는 정상적으로 받아서 처리하지만
jsp등 다른 언어에서는 처리가 되지않는 경우가 있습니다. 

단순히 array로 넘기게되면 Multipart/form data 로 전달되게 되기때문에, array형 변수를 그대로 넘기기보다는 http_build_query 함수등을 통하여 쿼리스트링형태로 변환하여 전달해주시는게 좋습니다.