Swoole 方法之 start

83 阅读1分钟

启动服务器, 监听所有 TCP/UDP 端口

提示

启动成功后会创建 worer_num + 2 个进程 . Master 进程 +Manager 进程 + server->worker_numWorker 进程.

启动失败后会立即返回 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 文件中.