Swoole常用工具Demonster介绍与使用方法

云墨同学_4255

云墨同学_4255

2023-06-13

1770人浏览

原创

swoole常用工具demonster介绍与使用方法

Swoole是一款常用的高性能网络框架,它的异步多进程模型和强大的网络编程功能,使得它在Web服务、游戏服务等领域有着广泛的应用。然而,开发人员在使用Swoole过程中常常会遇到一些烦琐的问题,例如:如何排查Swoole进程故障、如何分析Swoole进程内存占用情况等等。这些问题对于Swoole的高效运行来说非常重要。因此,本文将向大家介绍一款Swoole常用工具——Demonster。

一、什么是Demonster?

Demonster是一款开源的Swoole常用工具,它能够帮助开发人员排查Swoole进程故障、分析Swoole进程内存占用情况、并监控Swoole进程的状态等等。Demonster提供了一系列命令行工具和UI界面,让开发人员可以方便地操作、查看和分析Swoole进程的各种信息。

二、Demonster的安装

Demonster的安装非常简单,只需要使用Composer即可。步骤如下:

1.在项目根目录下创建composer.json文件,添加以下内容:

{
    "require": {
        "yueliangdali/demonster": "dev-master"
    }
}

2.在命令行中运行composer update命令下载并安装必要的库和依赖。

3.在nginx或apache等Web服务器上配置一个虚拟主机,并将根目录指向Demonster项目的public目录。例如,在nginx服务器上的配置:

server {
    listen 80;
    server_name demo.demonster.com;
    root /var/www/demonster/public;

    location / {
        index index.php;
        if (!-e $request_filename){
            rewrite ^/(.*)$ /index.php?$1 last;
            break;
        }
    }

    location ~ .php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME /var/www/demonster/public$fastcgi_script_name;
        include        fastcgi_params;
    }
}

4.在Swoole项目中引入Demonster的命名空间和启动类即可开始使用。例如,在一个WebSocket服务器中:

<?php require_once __DIR__ . '/vendor/autoload.php';//加载Composer自动生成的autoload.php文件
use yueliangdalidemonsterDemonster;
use SwooleWebSocketServer;

$server = new Server("127.0.0.1", 9501);
$server->set([
    'worker_num' => 2,
    'task_worker_num' => 2,
    'daemonize' => false,
]);

Demonster::start();//启动Demonster

$server->on('open', function (Server $server, $request) {
    echo "server: handshake success with fd{$request->fd}
";
    $server->task('hello, task');//触发一个task任务
});

$server->on('message', function (Server $server, $frame) {
    echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}
";
    $server->push($frame->fd, "this is server");
});

$server->on('close', function ($ser, $fd) {
    echo "client {$fd} closed
";
});

$server->on('task', function ($server, $task_id, $worker_id, $data) {
    echo "New AsyncTask[id=$task_id]" . PHP_EOL;
    $server->finish("$data -> OK");
});

$server->on('finish', function ($server, $task_id, $data) {
    echo "AsyncTask[$task_id] Finish: $data" . PHP_EOL;
});

$server->start();

三、Demonster的功能

Swoole 6.1.1
Swoole 6.1.1

Swoole 6.1.1 是一个专为 PHP 设计的高性能事件驱动并发网络引擎。作为稳定版,它修复了编译时对 zlib 依赖的缺失及 curl 模块的内存安全风险。该版本支持协程、多线程与多进程架构,内置 TCP/HTTP/WebSocket 服务器,能够显著提升 PHP 在微服务、实时通信等场景下的执行效率与并发能力。

下载

1.展示服务器的状态

Demonster提供命令demonster status,可以显示服务器的状态,包括:Swoole服务器的死循环是否正在执行、已启动的Worker进程和Task进程数量、TCP和UDP连接数等等。例如:

$ demonster status

                    _____              ____       
                   / ____|            / __       
                  | (___   ___  ___ _| |  | |_ __ 
                   ___  / _ / _  '__| |  | | '__|
                   ____) |  __/  __/ |  | |__| | |   
                  |_____/ ___|___|_|   ____/|_|   
                    
                      Swoole Server Status

Swoole version:4.4.17
 php version:7.2.24
  PHP memory:1.37MB
 
-----------------------------------------  
start at:2021-07-05 12:50:12
swoole version:4.4.17 (reactor_num:2, worker_num:2, task_worker_num:2)
listen:tcp://0.0.0.0:9501

---Processes---
 master  pid:  23291   status: start     memory: 1MB
   ├─worker  pid:  23295   status: start     memory: 2MB
   ├─worker  pid:  23296   status: start     memory: 2MB
   ├─task    pid:  23297   status: start     memory: 2MB
   ├─task    pid:  23298   status: start     memory: 2MB
   └─manager pid:  23294   status: start     memory: 2MB
 
---Connect Info---
TCP LiveConnections: 8
                 Not ESTABConnections: 0
            SWNotsTCP TimeWaitConnections: 0
              UDPLiveConnections: 0
                    Lastreloadtime: 2021-07-06 10:35:38
                           reload: DYNAMIC

2.分析服务器内存使用情况

Demonster提供命令demonster memory,可以显示Swoole服务器的内存情况,包括:进程数量、PID、内存占用情况等等。该命令还可以传递一个-c参数,用于对所有进程的内存占用情况进行统计和排序。例如:

$ demonster memory

                   _____              ____       
                  / ____|            / __       
                 | (___   ___  ___ _| |  | |_ __ 
                  ___  / _ / _  '__| |  | | '__|
                  ____) |  __/  __/ |  | |__| | |   
                 |_____/ ___|___|_|   ____/|_|   
                
            Swoole Server Memory Usage

Swoole version:4.4.17
 php version:7.2.24
  PHP memory:1.37MB
 
-------------------------------
Swoole worker process mask memory usage
PID       POW   Used(M)    RealUsed(M) Diff(M)
23295     22      3.860      1.426      2.434
23296     22      3.860      1.427      2.433

-------------------------------
Swoole task process mask memory usage
PID      POW   Used(M)    RealUsed(M) Diff(M)
23297    22      3.860      1.926      1.934
23298    22      3.860      1.925      1.935

-------------------------------
Swoole manager process mask memory usage
PID          Used(M)   %  RealUsed(M) % Diff(M)
23294      1.038M    0.06%      1.124124M 0.07% 85.76KB

-------------------------------
Total Memory Usage
           Used(M) RealUsed(M)
Total       33MB      13.77MB
Avg(each)   3.7MB     1.53MB

3.Demonster UI界面

除了命令行工具外,Demonster还提供了一个UI界面,方便开发人员在Web端对Swoole服务器进行监控和管理。

UI界面的访问地址为:http://yourhost.com/demonster/index.php(需要根据实际的Web服务器配置进行修改)。打开后可以看到一个简单的页面,其中显示了Swoole服务器的状态和进程信息,同时提供了进程监控和CPU、内存情况分析等功能。

四、小结

Demonster是一款非常实用的Swoole常用工具,它提供了丰富的功能和简单易用的操作界面,方便了开发人员在Swoole开发过程中的排错和监控工作。同时,Demonster是一个开源、高可靠的工具,值得开发人员在Swoole开发中加以尝试和使用。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

swoole

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.12.25

364

5

Composer 安装与快速入门指南
Composer 安装与快速入门指南

面向 PHP 开发新手,详细介绍 Composer 的下载安装方式(本地安装与全局安装)、国内镜像源(阿里云/腾讯云)加速配置、composer.json 与 composer.lock 文件的作用解析、require/install/update 等核心命令的使用方法,帮助开发者快速掌握 PHP 依赖管理的基本工作流。

2026.04.10

603

36

Composer 依赖管理与版本控制实战
Composer 依赖管理与版本控制实战

深入讲解 Composer 的依赖管理机制,涵盖语义化版本号规范、版本约束符(^、~、*、>=)的区别与最佳实践、composer.lock 在团队协作中的锁定策略、依赖冲突的排查与解决方法、require-dev 与生产依赖的分离管理、平台依赖检查(platform-check)等进阶内容,帮助开发者在项目中精准控制依赖版本、避免"依赖地狱"。

2026.04.10

367

29

Composer 自定义包开发与发布教程合集
Composer 自定义包开发与发布教程合集

以实际项目为导向,讲解如何从零创建一个符合规范的 Composer 包,涵盖 composer.json 元信息配置、PSR-4 自动加载规则设置、命名空间规划、单元测试集成、README 与 LICENSE 编写规范,以及将包提交到 Packagist 公共仓库或搭建 Satis/Private Packagist 私有仓库的完整发布流程,帮助开发者将可复用代码封装为标准化的 Composer 包。

2026.04.10

389

15

Composer 自动加载机制与性能优化
Composer 自动加载机制与性能优化

系统剖析 Composer 的自动加载体系,讲解 PSR-0 与 PSR-4 自动加载标准的区别与演进、classmap 与 files 加载方式的适用场景、autoload_real.php 源码级加载流程解析,同时介绍 composer dump-autoload -o 优化加载映射、APCu 缓存加速、authoritative-classmap 配置等生产环境性能优化手段,帮助开发者深入理解自动加载原理并提升项目启动速度。

2026.04.13

340

21

Composer 在主流 PHP 框架中的应用实践
Composer 在主流 PHP 框架中的应用实践

结合 Laravel、ThinkPHP、Symfony 等主流 PHP 框架的实际场景,讲解 Composer 在框架项目中的典型应用,包括通过 create-project 初始化框架项目、安装与管理第三方扩展包、scripts 钩子(post-install/post-update)自动执行部署任务、自定义 Installer 插件开发、多项目共享 vendor 依赖的 Monorepo 工作流管理,帮助开发者在真实框架项目中充分发

2026.04.13

523

14

Composer 镜像源配置与网络问题排查
Composer 镜像源配置与网络问题排查

针对国内开发者常遇到的 Composer 网络问题,详细讲解阿里云、腾讯云、华为云等国内镜像源的全局与项目级切换方法、多镜像源优先级配置策略、composer config 命令行快速设置技巧,同时涵盖 SSL 证书错误、连接超时、下载中断等常见网络报错的排查与修复方案,以及利用 artifact / path 仓库实现完全离线环境下的依赖安装。

2026.04.14

331

24

Composer Scripts 脚本与自动化工作流
Composer Scripts 脚本与自动化工作流

系统讲解 Composer Scripts 机制的完整用法,涵盖 pre-install、post-update、post-autoload-dump 等内置事件钩子的触发时机与应用场景、自定义脚本命令的定义与参数传递、调用外部 Shell 命令与 PHP 静态方法、多脚本串联执行与条件判断,以及结合代码检查(PHPStan/PHP-CS-Fixer)、数据库迁移、缓存清理等任务构建一键部署自动化工作流。

2026.04.14

410

18

Composer 私有仓库搭建与企业级管理
Composer 私有仓库搭建与企业级管理

面向团队与企业开发场景,讲解如何使用 Satis 搭建轻量级静态私有仓库、通过 Toran Proxy / Private Packagist 构建功能完善的企业级私有包管理平台,涵盖 Git/SVN 仓库类型接入、Token 鉴权与访问权限控制、Webhook 自动触发包更新、内网部署方案以及与 GitLab CI/CD 流水线的集成配置,帮助企业安全高效地管理内部 PHP 组件资产。

2026.04.14

440

26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Swoole手册
Swoole手册

共0课时 | 0人学习

ThinkPHP5.1完全开发手册
ThinkPHP5.1完全开发手册

共0课时 | 0人学习

swoole进程树解析
swoole进程树解析

共4课时 | 0.3万人学习