ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

swoole 进程模型

2022-04-25 13:01:26  阅读:230  来源: 互联网

标签:serv 12 swoole 模型 进程 php lis2 23545 501


简介

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官方的进程模型图例
image
pid = 23544 是master进程
pid = 23545 是manager进程
其他的是manager进程产生的woker进程和task进程
然后打开Mac的活动监视器,查看主进程的线程
image

可以看出主进程有四个线程
通过上面的分析不难看出为什么swoole是不需要Nginx或apache这类应用服务器了,原来swoole会产生那么多进程和线程来进行处理数据的收发

标签:serv,12,swoole,模型,进程,php,lis2,23545,501
来源: https://www.cnblogs.com/lis2/p/16189800.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有