swoole 进程模型
2022/4/26 7:13:04
本文主要是介绍swoole 进程模型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
简介
swoole的进程模型简单理解就是当启动一个服务时swoole是怎么处理的,怎么做到数据的收发处理
案例
从网上找了一段非常常见的代码
<?php class Server { private $serv; public function __construct() { $this->serv = new swoole_server("0.0.0.0", 9502); $this->serv->set([ 'worker_num' => 3, 'task_worker_num' => 3, ]); $this->serv->on('Start', function ($serv) { echo "SWOOLE:".SWOOLE_VERSION . " 服务已启动".PHP_EOL; echo "SWOOLE_CPU_NUM:".swoole_cpu_num().PHP_EOL; }); $this->serv->on('Receive', function ($serv, $fd, $from_id, $data) { }); $this->serv->on('Task', function ($serv, $task) { }); $this->serv->on('Finish', function ($serv, $task_id, $data) {}); $this->serv->start(); } } $server = new Server();
环境说明
OS: Mac
PHP:73
运行cli命令启动服务
启动完毕之后,查看启动的进程数据
$ ps -ef | grep serv.php 501 23544 1961 0 12:40下午 ttys000 0:00.11 php serv.php 501 23545 23544 0 12:40下午 ttys000 0:00.00 php serv.php 501 23546 23545 0 12:40下午 ttys000 0:00.00 php serv.php 501 23547 23545 0 12:40下午 ttys000 0:00.00 php serv.php 501 23548 23545 0 12:40下午 ttys000 0:00.00 php serv.php 501 23549 23545 0 12:40下午 ttys000 0:00.00 php serv.php 501 23550 23545 0 12:40下午 ttys000 0:00.00 php serv.php 501 23551 23545 0 12:40下午 ttys000 0:00.00 php serv.php 501 23555 21372 0 12:41下午 ttys004 0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox serv.php
上面一共有9个进程显示,其中最后一个是运行ps -ef | grep serv.php 的命令产生的,去除这个一个有8个进程,可以看出23544是其他进程的父进程,然后我们使用树状显示
$ pstree -p 23544 -+= 00001 root /sbin/launchd \-+= 01959 lis2 /Applications/iTerm.app/Contents/MacOS/iTermServer /Users/lis2 \-+= 01960 root login -fp lis2 \-+= 01961 lis2 -zsh \-+= 23544 lis2 php serv.php //master \-+- 23545 lis2 php serv.php//manager |--- 23546 lis2 php serv.php |--- 23547 lis2 php serv.php |--- 23548 lis2 php serv.php |--- 23549 lis2 php serv.php |--- 23550 lis2 php serv.php \--- 23551 lis2 php serv.php
结合swoole官方的进程模型图例
pid = 23544 是master进程
pid = 23545 是manager进程
其他的是manager进程产生的woker进程和task进程
然后打开Mac的活动监视器,查看主进程的线程
可以看出主进程有四个线程
通过上面的分析不难看出为什么swoole是不需要Nginx或apache这类应用服务器了,原来swoole会产生那么多进程和线程来进行处理数据的收发
这篇关于swoole 进程模型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南