PHP 주요레퍼런스/파일 시스템 함수

fsoketopen

웹 개발자의 비상 2011. 8. 6. 03:03
resource fsockopen(string hostname [, int port [, int errno [, string errstr [, float timeout]]]] )
호스트에서 지정한 리소스에 소켓 연결을 시작한다.

일반적으로 php.ini에서 보완과 관련해 alllow_url_fone = Off 함으로 타도메인관에 fpoen은 막게 되는데
이럴경우 타 도메인의 리소스를 fopen 열수 없다. 이때 fsockopen을 사용해 리소스를 열수 있다.
호출에 실패하면 FALSE 를 반환하고 errno와 errstr이 있을 경우 설정된 에러번호와 메세지를 출력하는 데 사용할수 있다.
timeout은 연결시도 시간이다.

예제1 - 해당웹페이지의 내용을 가져온다

<?
$url="http://www.urltest.com"; //연결한 주소를 넣는다.

$_URL = parse_url($url);
$host = $_URL["host"];
$port = $_URL["port"];
$port = !$port ? 80 :$port;
$path = $_URL["path"];
$path = empty($path) ? "/" : $path;
$path .= $_URL["query"] ? "?".$url_parsed["query"]:"";
$out = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n";

$fp = fsockopen($host, $port, $errno, $errstr, 30);

if (!$fp) { //성공이면 0이아닌수 실패면 0
echo ".... $errstr ($errno)<br>\n";
} else {
fputs($fp, $out); //연결된 호스트에 파이프가 연결되어있어 그위에 해당문자열을 올려놓는다.후에 데몬처리
$output = 0;
while(!feof($fp)) {
//echo fgets($fp,128); //처리한 데몬이 출력하여 파아프에 결과문자열올려놓음. 문자열의 마지막까지 128비트씩 가져와서 화면에 출력

$get_str = fgets($fp, 128);
if($output == 0 && $get_str=="\r\n") {
$output = 1;
}
//echo $output;
if($output) echo $get_str;
}
fclose ($fp); //소켓파이프 연결제거
}
?>

728x90

'PHP 주요레퍼런스 > 파일 시스템 함수' 카테고리의 다른 글

feof  (0) 2011.08.06
fwrite / fputs  (0) 2011.08.06
fread  (0) 2011.08.06
fclose  (0) 2011.08.06
fopen  (0) 2011.08.05