此篇博客是接着上篇php socekt阻塞模型PHP代码(php socket IO阻塞方式的Server/Client)的进阶,IO阻塞模型只能是同一个时刻只能由一个客户端进行访问,除非利用多进程或多线程才能达到多个用户并发访问的,因涉及到多进程和多线程,暂时跳过,
此片为linux的IO操作的5大模型第三种模型:IO复用,而IO复用又有多种方式实现,常见的如select、poll、epoll函数。这几个函数也会使进程阻塞,但是和阻塞I/O所不同的的,这些函数可以同时阻塞多个I/O操作。而且可以同时对多个读操作,多个写操作的I/O函数进行检测,直到有数据可读或可写时,才真正调用I/O操作函数,这些定义网上资料都很多,我这就不一一描述,如有需要可参考:socket阻塞与非阻塞,同步与异步
下面是socket IO复用 select 模型代码PHP 的代码描述,讲述如何使用PHP代码实现select模型。其中也对socket_select的作用,进行自我总结
select_server.php
<?php
/**
* server.php.
* User: lvfk
* Date: 2017/12/1 0001
* Time: 16:47
* Desc:
*/
set_time_limit(0);
class SelectSocketServer
{
private static $socket;
private static $timeout = 60;
private static $maxconns = 1024;
private static $connections = array();
function __construct($port)
{
global $errno, $errstr;
if ($port < 1024) {