最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:懂视网 责编:小采 时间:2020-11-02 18:23:48
文档

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

Think-Swoole教程之配置、工作进程、携程魅力以及理解 Swoole 进程模式:下面由thinkphp教程栏目给大家介绍Think-Swoole教程之配置、工作进程、携程魅力以及理解 Swoole 进程模式,希望对需要的朋友有所帮助!Think-Swoole 配置、工作进程、携程魅力以及理解 Swoole 进程模式配置文件:app/config/swoole.php
推荐度:
导读Think-Swoole教程之配置、工作进程、携程魅力以及理解 Swoole 进程模式:下面由thinkphp教程栏目给大家介绍Think-Swoole教程之配置、工作进程、携程魅力以及理解 Swoole 进程模式,希望对需要的朋友有所帮助!Think-Swoole 配置、工作进程、携程魅力以及理解 Swoole 进程模式配置文件:app/config/swoole.php
下面由thinkphp教程栏目给大家介绍Think-Swoole教程之配置、工作进程、携程魅力以及理解 Swoole 进程模式,希望对需要的朋友有所帮助!

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

配置文件:

app/config/swoole.php

'server' => [
 'host' => env('SWOOLE_HOST', '0.0.0.0'), // 监听地址
 'port' => env('SWOOLE_PORT', 9501), // 监听端口
 'mode' => SWOOLE_PROCESS, // 运行模式 默认为SWOOLE_PROCESS
 'sock_type' => SWOOLE_SOCK_TCP, // sock type 默认为SWOOLE_SOCK_TCP
 'options' => [ // 都是给 Swoole 服务的配置,可以根据 Swoole 手册额外增加其它的 Swoole 配置
 'pid_file' => runtime_path() . 'swoole.pid', //服务启动以后进程 ID 存放文件
 'log_file' => runtime_path() . 'swoole.log', //Swoole 的日志文件
 'daemonize' => false, //守护进程模式设置,true 后台运行
 // Normally this value should be 1~4 times larger according to your cpu cores.
 'reactor_num' => swoole_cpu_num(), //后台启动的 Reactor 线程数
 'worker_num' => swoole_cpu_num(), //设置启动的 Worker 进程数
 'task_worker_num' => swoole_cpu_num(), //配置 Task 进程数
 'enable_static_handler' => true, //开启静态文件请求处理功能,需配合 document_root
 'document_root' => root_path('public'), //配置静态文件根目录
 'package_max_length' => 20 * 1024 * 1024, //设置最大数据包尺寸,单位为字节
 'buffer_output_size' => 10 * 1024 * 1024, //配置发送输出缓存区内存尺寸
 'socket_buffer_size' => 128 * 1024 * 1024, //用于设置客户端连接最大允许占用内存数量
 ],
],

工作进程:

'worker_num' => swoole_cpu_num(),

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

协程

在 Swoole 的配置文件中,还有一个选项,是配置协程的:

'coroutine' => [
 'enable' => true,
 'flags' => SWOOLE_HOOK_ALL,
 ],

'enable' => true 代表开启协程。假设现在需要同时处理 3 个请求(也可以更多),即使工作进程设置为 1,这三个请求也可以同时进行处理,但是它们的进程号是一样的,因为工作进程还是一个。这就是 Swoole 协程的魅力。

理解 Swoole 进程模式

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

企业微信截图_16004998481910.png

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

配置工作进程数为 2 ,重启 Swoole 服务,再次查看进程状态:

企业微信截图_16004998557086.png

可见,有两个 worker process 进程。

执行pstree -p 31568,可得到如下关系图:

企业微信截图_16004998624194.png

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

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

Think-Swoole教程之配置、工作进程、携程魅力以及理解 Swoole 进程模式:下面由thinkphp教程栏目给大家介绍Think-Swoole教程之配置、工作进程、携程魅力以及理解 Swoole 进程模式,希望对需要的朋友有所帮助!Think-Swoole 配置、工作进程、携程魅力以及理解 Swoole 进程模式配置文件:app/config/swoole.php
推荐度:
标签: 工作 教程 think
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top