현재 위치: > 함수 카테고리 모음> stream_select

stream_select

주어진 스트림 배열에서 select () 시스템 호출을 실행하고 TV_SEC 및 TV_USEC에서 지정된 시간 초과를 사용하십시오.
이름:stream_select
분류:개울
사용 언어:php
한 줄 설명:하나 이상의 파일 스트림에 읽을 수 있거나 쓰기 가능하거나 예외적 인 이벤트가있을 때까지 주어진 파일 스트림 세트에서 기다립니다.

함수 이름 : stream_Select ()

해당 버전 : PHP 4> = 4.3.0, PHP 5, PHP 7

함수 설명 : stream_Select () 함수는 하나 이상의 파일 스트림이 읽을 수 있거나 쓰기 가능하거나 예외적 인 이벤트가있을 때까지 주어진 파일 스트림 세트에서 대기하는 데 사용됩니다. 네트워크 프로그래밍에서 매우 일반적인 기능이며 효율적인 I/O 멀티플렉서를 생성하는 데 사용할 수 있습니다.

구문 : int stream_select (array & $ read, array & $ write, array & $, int $ tv_sec [, int $ tv_usec = 0]).

매개 변수 :

  • $ 읽기 : 확인할 읽기 쉬운 스트림이 포함 된 배열을 확인합니다.
  • $ 쓰기 : 확인할 쓰기 스트림이 포함 된 배열을 확인합니다.
  • 예외 : 점검 할 예외 스트림이 포함 된 배열.
  • $ tv_sec : 대기 시간을 설정합니다.
  • $ TV_USEC : 대기 시간 마이크로 초 수를 설정합니다.

반환 값 : 시간 초과 전에 발생하는 스트림 수 또는 오류가 발생한 경우 False를 반환합니다.

예:

 $socket1 = stream_socket_client("tcp://www.example.com:80", $errno, $errstr, 30); $socket2 = stream_socket_client("tcp://www.example.net:80", $errno, $errstr, 30); $socket3 = stream_socket_client("tcp://www.example.org:80", $errno, $errstr, 30); $read = array($socket1, $socket2, $socket3); $write = $except = null; if (stream_select($read, $write, $except, 5)) { foreach ($read as $socket) { $data = fread($socket, 1024); // 对读取到的数据进行处理} } else { // 超时或出错处理}

위의 예에서는 세 가지 TCP 연결을 생성하여 $read 배열에 넣습니다. 그런 다음 stream_select() 함수를 호출 하여이 연결에서 읽을 수있는 이벤트가 발생할 때까지 대기 시간이 5 초입니다. 시간 초과 시간 내에 읽을 수있는 이벤트가 발생하면 fread() 함수를 사용하여 데이터를 읽고 처리합니다. 시간 초과 또는 오류가 발생하면 필요에 따라 그에 따라 처리 할 수 ​​있습니다.

stream_select() 함수가 차단되고 있습니다. 즉, 이벤트가 발생하거나 시간 초과 될 때까지 대기 중에 스크립트가 실행을 일시 중지합니다. 따라서 일반적으로 비 블로킹 모드 스트림과 함께 사용하여 장점을 완전히 활용해야합니다.

유사한 함수
인기 기사