[php] curl 라이브러리를 이용한 소켓통신 함수 프로그래밍

전에 올렸던 [이니시스/PG] Mobile 모듈 붙이기

포스팅에 request_curl 함수에 대해서 궁금해 하신분이 계셔서 포스팅한다.

request_curl 함수는 직접만든 사용자정의 함수이며

php 상에 curl 라이브러리가 설치되어야 사용가능한 기능이다.

간단하게 소켓통신을 간편하게 해주는 도구라고 생각하면 된다.

 

1. curl 이 설치 되어있는지 확인하기.

php를 실행할수있는 서버에 하나의 가상파일을 만들어서 해당 코드 입력.

<?php
   
    phpinfo();

?>

해당코드 입력후 파일을 실행해서 결과값 확인.

phpinfo_curl1.jpg

phpinfo_curl2.jpg

 

curl이 설치되어있는지 확인.

설치가 되어있지 않다면 서버담당자에게 요청하거나 직접설치한다. (설치내용은 길어서 다음에 포스팅)

 

2. 설치가 되었있다면 curl을 사용할 함수를 제작.

/**
 * @param $url  값을 던질 url
 * @param int $is_post   post 통신이면 1, get 이면0
 * @param array $data    전달할 값
 * @param null $custom_header    header를 같이 전송할경우
 * @return mixed
 */
function request_curl($url, $is_post=0, $data=array(), $custom_header=null) {
        $ch = curl_init();
        curl_setopt ($ch, CURLOPT_URL,$url);
        curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt ($ch, CURLOPT_SSLVERSION,1);
        curl_setopt ($ch, CURLOPT_POST, $is_post);
        if($is_post) {
            curl_setopt ($ch, CURLOPT_POSTFIELDS, $data);
        }

        curl_setopt ($ch, CURLOPT_TIMEOUT, 300);
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
        //curl_setopt ($ch, CURLOPT_HEADER, true);

        if($custom_header) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $custom_header);
        }
        $result[0] = curl_exec ($ch);
        $result[1] = curl_errno($ch);
        $result[2] = curl_error($ch);
        $result[3] = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close ($ch);
        return $result;
}

 

3. 사용법

         $params = array( 'P_TID' => '값', 'P_MID' => '값' );
         $strArrResult = request_curl('값을 던질 url', 1, $params);

 

 

Tag :

Leave Comments