본문 바로가기
개발자공간/PHP

PHP 비동기 데이터전송(fsockopen)

by 냉국이 2023. 3. 28.
728x90

 

 

function cs_fsockopen($url, $send_data = [], $key){

    $parts = parse_url($url);

    $parts['scheme']    = $parts['scheme'] == 'https' ? 'ssl' : $parts['scheme'];
    $parts['port']      = 80;
    $parts['port']      = $parts['scheme'] == 'ssl' && $parts['port'] == 80 ? 443 : $parts['port'];
    $parts['hostname']  = $parts['scheme'] == 'http' ? $parts['host'] : "{$parts['scheme']}://{$parts['host']}";

    $SendString = json_encode($send_data);

    $req = "";
    $req .= "POST {$parts['path']} HTTP/1.1" . PHP_CRLF;
    $req .= "Host: {$parts['host']}" . PHP_CRLF;
    $req .= "Content-Type: application/json".PHP_CRLF;
    $req .= "Authorization: key={$key}" . PHP_CRLF;
    $req .= "Content-Length: " . strlen($SendString) . PHP_CRLF;
    $req .= "Connection: Close". PHP_CRLF;
    $req .= PHP_CRLF;
    $req .= $SendString;

    $fsock = @fsockopen($parts['hostname'], $parts['port'], $errno, $error, 10);

    if(!$fsock) return false;

    //    $this->error = $error;
    //    $this->errno = $errno;  

    //전송 후 바로 커넥션 종료
    @fwrite($fsock, $req);
    @fclose($fsock);

}
300x250

댓글