Think-Swoole教程之配置、工作进程、携程魅力以及理解 Swoole 进程模式

下面由thinkphp教程栏目给大家介绍Think-Swoole教程之配置、工作进程、携程魅力以及理解 Swoole 进程模式,希望对需要的朋友有所帮助!

Think-Swoole 配置、工作进程、携程魅力以及理解 Swoole 进程模式

配置文件:

apy S 4 8 T } V q ~p/cd X i @ j 0 Monfig/swoole.php

'server'     => [
'host% n Y *'      => env('SWOOLE_HOST', '0.0.0.0'G N O f g C R J @), // 监听地址
'port'      => env([ Z ;'SWOOLE_PORT', 9501), // 监听端口
'mode'      => SWOOLE_PROCESS, // 运行模式 默认为SWOOLE_PROCESS
'sock_ Q c l U R {_type' => SWOOLE_SOCK_TCP, // so- Z ) t a f /ck type 默认为SWOOLE_SOCK_Tz 8 V 6CP
'options'   => [ // 都f  C Q  ? / l Q是给 Swoole 服务的配置,可以根据 Swoole 手册额外增加其它的 Swoole 配置
'pid_file'              => runtime_path() . 'swoole.pid', //服务启动以后进程 ID 存放文件
'log_file'              => runtime_path() . 'swoole.log', //Swoole 的日志n F n X V G ? _ 5文件
'daemonize'             =&ga o { Rt; false, //守护进程模式设置,true 后台运行
// Normally this value should be 1~4 times larger accordi4 g L L #ng to your cpu cores.
'reactor_num'           => swoole_cpu_num(), //后台启动的 Reactor 线程数
'worker_num'            => swoole_cpu_num()h j , //设置启动的 Worker 进程数
'task_worker_num'       =&gC . U Q 5 O T X 0t; swo. E Y n R }  Tole_cpu_num(), //配置8 e g ; Task 进程数
'enable_static_hA o I a mandler' => true, //开启静态文件请求处理功能,需配合 document_root
'document_root'         => root_path('public'), //配置静态文件根目录
'package_max_length'    => 20 * 1024 * 1h E d n j . B 3024, //设置最大数据包尺寸,单位为q 6 D o ( h字节
'buffer_output_sizeR H : C D ( f d ~'    => 10 * 1024 * 1024, //配置发送输出缓存区} y l ; x : ) u内存尺寸
'socket_buffer_size'    => 128 * 1024 * 1024, //用于设置客户端连接最大允许占用内存数量
],
],

工作进程:

'worker_num' =&; { 4 v - . Y ; ~gt; swoole_cpu_num(),

这个配置是设置工作进程的, swoole_cpu_num() 是获取本机CPU核数] K T,如果将它手动设置为 1,那么同一时间有两个请求需要处理,一次只[ ( } / e Q能处理一个,另一个处于等候状态,第一个处理完后会紧接着处理第二个,但他们还G Z |是属于一个进程,两个请求的进程号是一样的。如何设置为 2,那么同时可以处理 2 个请求,并且有两个不同的进程号。

协程

在 Swoole 的配置文件中,还有一个选项,是b # q Y 9配置协程的:

'coroutine'  => [
'enai Z s x g O r lble' => true,
'flags'  => SWOOLE_HOOK_ALL,
],

'enf d ` T z H 1able' => true 代表开启协程。假设现在需要同时处理 3 个请求(也可以更多),即使工作进程设置为 1,这三个请求也可以同时进行处理,但是T A j F $ U v @ T它们的进程号是一样的,因为工作进程还是一个。这就是 Swoolep Y r g 3 V - [ U 协程的魅力。

理解 Swoole 进程模式

配置工作进程数为 1& d i = x ,然后通过命令 php think swoole 开启服务后,新开命令窗口执行 ps -ef | grep swoole 查看进程状态 ,如下图所示:

Think-Swoole教程之配置、工作进程、携程魅力以及理解 Swoole 进程模式

当 Swoole 启动时,会首先启动一个 master 主进程,然后会启动d V .一个 manager 管理子进程,这两个进程不会去处理请求的工作,请求的处理交给 manager 的子进程 worker。上图中可见,master 主进程的进程号 30665,manager 子进程 30666 的父进程是 30665,task process 和 worker process 的父进程x h 4 E e都是 30666。

6 B [ q K置工作进程数为 2 ,重启 Swoole 服务,再x V n H h : u } J查看进程M s f u s O U状态:

Think-Swoole教程之配置、工作进程、携程魅力以及理解 Swoole 进程模式

可见,有两个 worke& w O dr p1 ) s Q W Q V 3rocess 进程。

执行pstree -p 3U ^ F c $1568,可得到如下关系图:

以上就是Think-Swoole教程之配置、工作进程、携程魅力以及理解 Swoole 进程模式的详细内容。