启动服务器, 监听所有 TCP/UDP 端口
提示
启动成功后会创建 worer_num + 2 个进程 . Master 进程 +Manager 进程 + server->worker_num 个 Worker 进程.
启动失败后会立即返回 false.
启动成功后将进入事件循环, 等待客户端连接请求. start 方法之后的代码不会执行.
服务器关闭后, start 函数返回 true, 并继续向下执行.
设置了 task_worker_num 会增加响应数量的 Task 进程.
方法列表中 start 之前的方法 (set,on,addListener,listen,addProcess) 仅可在 start 调用前使用. 在 start 之后的方法仅可在 onWorkerStart.onReceive 等事件回调函数中使用.
扩展
Master 主进程
主进程内有多个 Reactor 线程, 基于 epoll/kqueue/select 进行网络事件轮训. 收到数据后转发到 Worker 进程去处理.
Manager 进程
对所有 Worker 进程进行管理, Worker 进程生命周期结束或发生异常自动回收, 并创建新的 Worker 进程.
Worker 进程
对收到的数据进行处理, 包括协议解析和响应请求. 未设置 worker_num, 底层会启动与 CPU 数量一致的 Worker 进程.
启动失败扩展内会抛出致命错误, 请检查 php error_log 的相关信息. errno={number} 是标准的 Linux Errno
如果开启了 log_file 设置, 信息会打印到指定的 Log 文件中.