티스토리 뷰

오늘도 개발자/PHP

[PHP] 스트림(Streams)

오늘도공대생 2022. 1. 30. 06:26

stream_context_create(?array $options = null, ?array $params = null): resource

사전 설정 에 제공된 모든 옵션을 사용하여 스트림 컨텍스트를 만들고 반환합니다

stream_context_set_option(
    resource $stream_or_context,
    string $wrapper,
    string $option,
    mixed $value
): bool

stream_context_set_option(resource $stream_or_context, array $options): bool

스트림/래퍼/컨텍스트에 대한 옵션을 설정합니다.

스트림 옵션 목록은 컨텍스트 옵션 및 매개변수 를 참조하세요

 

PHP: Context options and parameters - Manual

Context options and parameters Table of Contents

docs.php.net

$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

$fp = fopen('http://www.example.com', 'r', false, $context);
fpassthru($fp);
fclose($fp);

 

스트림 필터

stream_get_filters(): array

실행 중인 시스템에 등록된 필터 목록을 검색합니다.

 

 

스트림 Socket

 

예제 #1 TCP 서버 소켓 사용

$socket = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr);

if (!$socket) {
  echo "$errstr ($errno)<br />\n";
} else {
  while ($conn = stream_socket_accept($socket)) {
    fwrite($conn, 'The local time is ' . date('n/j/Y g:i a') . "\n");
    fclose($conn);
  }
  fclose($socket);
}

예제 #2 UDP 서버 소켓 사용

$socket = stream_socket_server("udp://127.0.0.1:1113", $errno, $errstr, STREAM_SERVER_BIND);
if (!$socket) {
    die("$errstr ($errno)");
}
do {
    $pkt = stream_socket_recvfrom($socket, 1, 0, $peer);
    echo "$peer\n";
    stream_socket_sendto($socket, date("D M j H:i:s Y\r\n"), 0, $peer);
} while ($pkt !== false);

예제 #3. stream_socket_client() TCP 예제

$fp = stream_socket_client("tcp://www.example.com:80", $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    fwrite($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n");
    while (!feof($fp)) {
        echo fgets($fp, 1024);
    }
    fclose($fp);
}

예제 #3. stream_socket_client() UDP 연결 예제

localhost의 UDP 서비스 "daytime"(포트 13)에서 날짜와 시간을 검색합니다.

$fp = stream_socket_client("udp://127.0.0.1:13", $errno, $errstr);
if (!$fp) {
    echo "ERROR: $errno - $errstr<br />\n";
} else {
    fwrite($fp, "\n");
    echo fread($fp, 26);
    fclose($fp);
}
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Streams

 

'오늘도 개발자 > PHP' 카테고리의 다른 글

[PHP]System program execution  (0) 2022.01.31
[PHP]Output Buffering Control  (0) 2022.01.30
[PHP]파일시스템(file system)  (0) 2022.01.29
[PHP] 디렉토리 제어(Directories)  (0) 2022.01.29
[PHP] JSON (JavaScript Object Notation)  (0) 2022.01.29
댓글