io复用

1、基本概念

多路复用模型是对多个IO操作进行检测,返回可操作集合,这样就可以对其进行操作了。这样就避免了阻塞IO不能随时处理各个IO和非阻塞占用系统资源的确定。多路复用适用如下场合:
1. 当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。
2. 当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。
3. 如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。
4. 如果一个服务器即要处理TCP,又要处理UDP,一般要使用I/O复用。
5. 如果一个服务器要处理多个服务或多个协议,一般要使用I/O复用。

2、socket_select

socket_select()等待sockets打开的连接事件。socket_select()调用系统的select(2)函数来工作:前面三个参数是你要使用的socket的数组;你可以对其读取,写入和获取异常(分别针对三个参数)。

3、 php实现多路复用

大致流程见下图:
io复用图