2020-11-07第四天网络IO模型

daemonize  守护进程化【默认值:0】

设置 daemonize => 1 时,程序将转入后台作为守护进程运行。长时间运行的服务器端程序必须启用此项。

如果不启用守护进程,当 ssh 终端退出后,程序将被终止运行。

提示

启用守护进程后,标准输入和输出会被重定向到 log_file

如果未设置 log_file,将重定向到 /dev/null,所有打印屏幕的信息都会被丢弃

启用守护进程后,CWD(当前目录)环境变量的值会发生变更,相对路径的文件读写会出错。PHP 程序中必须使用绝对路径

systemd

使用 systemd 或者 supervisord 管理 Swoole 服务时,请勿设置 daemonize = 1。主要原因是 systemd 的机制与 init 不同。init 进程的 PID 为 1,程序使用 daemonize 后,会脱离终端,最终被 init 进程托管,与 init 关系变为父子进程关系。

但 systemd 是启动了一个单独的后台进程,自行 fork 管理其他服务进程,因此不需要 daemonize,反而使用了 daemonize = 1 会使得 Swoole 程序与该管理进程失去父子进程关系。



worker_num 设置启动的 Worker 进程数。【默认值:CPU 核数】

如 1 个请求耗时 100ms,要提供 1000QPS 的处理能力,那必须配置 100 个进程或更多。

但开的进程越多,占用的内存就会大大增加,而且进程间切换的开销就会越来越大。所以这里适当即可。不要配置过大。

提示

如果业务代码是全异步 IO 的,这里设置为 CPU 核数的 1-4 倍最合理

如果业务代码为同步 IO,需要根据请求响应时间和系统负载来调整,例如:100-500

默认设置为 swoole_cpu_num(),最大不得超过 swoole_cpu_num() * 1000

假设每个进程占用 40M 内存,100 个进程就需要占用 4G 内存,如何正确查看进程的内存占用


网络Io模型

1阻塞模型

2非阻塞模型

3Io多路复用模型


php 中stream系列函数

stream_socket_server 创建一个socket

stream_socket_accept 用于接收链接

stream_socket_client 用于链接服务端

fread 读取资源信息

fwrite 写入资源信息



套接字


你可能感兴趣的:(2020-11-07第四天网络IO模型)