함수 이름 : 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]).
매개 변수 :
반환 값 : 시간 초과 전에 발생하는 스트림 수 또는 오류가 발생한 경우 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()
함수가 차단되고 있습니다. 즉, 이벤트가 발생하거나 시간 초과 될 때까지 대기 중에 스크립트가 실행을 일시 중지합니다. 따라서 일반적으로 비 블로킹 모드 스트림과 함께 사용하여 장점을 완전히 활용해야합니다.