swoole进程初识「建议收藏」

swoole进程初识

大家好,又见面了,我是全栈君。

swoole是事件驱动的,server.php一直监听端口,当客户端有数据流过去,则进行监听读取,并进处理。

安装环境

应该保证系统中安装了如下软件

gcc-4.4+
make
autoconf

PECL安装

pecl install swoole

php.ini 配置

extension=swoole.so

查看是否安装成功

php -m | grep swoole
> swoole

swoole升级

查看当前版本

php --ri swoole | grep Version
#结果
> Version => 1.9.6

pecl升级

pecl upgrade swoole                                         

swoole进程初识

swoole 默认是多进程模式
Master进程 / Manager进程 / Worker进程 / Task进程

swoole进程初识「建议收藏」
swoole进程初识「建议收藏」

server实例代码

server-process.php

$serv = new swoole_server('127.0.0.1', 9501);
$serv->set([
    'worker_num' => 2,
    'task_worker_num' => 1,
]);
$serv->on('Connect', function ($serv, $fd) {
});
$serv->on('Receive', function ($serv, $fd, $fromId, $data) {
});
$serv->on('Close', function ($serv, $fd) {
});
$serv->on('Task', function ($serv, $taskId, $fromId, $data) {
});
$serv->on('Finish', function ($serv, $taskId, $data) {
});

$serv->start();

对实例代码 进行pstree进程关系

pstree的结果有5个进程,因为swoole的进程模型是(Master-Manager-Worker),5个进程 = master进程(1个) + manager进程(1个) + worker_num(2个) + task_worker_num(1个)

$ pstree | grep server-process

 | |   \-+= 02548 php server-process.php
 | |     \-+- 02549 php server-process.php
 | |       |--- 02550 php server-process.php
 | |       |--- 02551 php server-process.php
 | |       \--- 02552 php server-process.php
 |     \--- 02572 grep server-process

从结果可以看出:
02548 是Master进程,它处于“root”层级
02549 是Manager进程
Worker进程和Task进程就是 02550、02551和02552

设置进程名称备注,再进行pstree进程关系

Master进程:
    启动:onStart
    关闭:onShutdown
Manager进程:
    启动:onManagerStart
    关闭:onManagerStop
Worker进程:
    启动:onWorkerStart
    关闭:onWorkerStop

mac下不支持swoole_set_process_name函数,可以用centos进行测试

$serv->on("start", function ($serv){
    swoole_set_process_name('server-process: master');
});
// 以下回调发生在Manager进程
$serv->on('ManagerStart', function ($serv){
    swoole_set_process_name('server-process: manager');
});
$serv->on('WorkerStart', function ($serv, $workerId){
    if($workerId < $serv->setting['worker_num']) {
        // $workerId = 0~worker_num之间,则为worker进程
        swoole_set_process_name("server-process: worker");
    } else {
        // $workerId >= worker_num之间,则为task进程
        swoole_set_process_name("server-process: task");
    }
});

ps出来的结果

# ps aux | grep server-process
root     27546  xxx... server-process: master
root     27547  xxx... server-process: manager
root     27549  xxx... server-process: task worker
root     27550  xxx... server-process: worker
root     27551  xxx... server-process: worker
root     27570  xxx... grep --color=auto simple

swoole进程初识「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111889.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月13日 下午2:00
下一篇 2022年2月13日 下午2:00


相关推荐

  • python错误–‘list‘ object is not callable可能的原因之一

    python错误–‘list‘ object is not callable可能的原因之一第一 代码 功能说明 用正则表达式匹配数字并对数字进行 1 操作 然后替换原数字 str literalbooks 1000 defadd1 match val match group num int val 1returnstr num info re sub r d add1 str printinfosta

    2026年3月19日
    2
  • LFSR(线性反馈移位寄存器)

    LFSR(线性反馈移位寄存器)线性反馈移位寄存器 LFSR 是移位寄存器的一种 通常用于在数字电路中产生伪随机数 寄存器中的初始值叫做种子 种子应该是非零的 LFSR 的下一时刻输入为是由整个移位寄存器值的某些位做异或运算的结果 选取哪些位置用于移位 是需要进行预先设计好的 目的是要产生一个伪随机并且尽可能长周期的数字序列 n 位 LFSR 最多产生 2 n 1 种序列 全零或全一被排除 因为全零异或 nor 结果为 0 不会产生新序列 全 1 同或 xnor 也是 影响下一个状态的比特位叫做抽头 移位寄存器链的多个抽头用作 XOR 或 XNOR 门的

    2026年3月16日
    2
  • 网络传真机,开启无纸化进程

    网络传真机,开启无纸化进程网络传真机,离你不再遥远!网络传真-真实号码版,超低价来袭,江苏电信倾力投资,立足江苏,面向全国!13万靓号任君选择。(1)传真发送功能点击写传真可进行单个号码发送传真也可多个号码发送(目前单次80个号码上限);传真群发操作:步骤1:输入发送的个号码,多个号码中间用逗号隔开;也可选择地址导入与文本导入方式导入需要发送的号码。步骤2:输入发送主题;步骤3:点击浏览上传要发送的传…

    2022年6月28日
    31
  • 深度学习中常见的打标签工具和数据集集合

    深度学习中常见的打标签工具和数据集集合集大家之所长汇集于此 希望对有需要的你能有所帮助 一 打标签工具 1 labelimg labelme 这两款工具简便易行 前者主要用于对目标进行大致的标定 用于常见的框选标定 后者主要用于较为细致的轮廓标定 多用于 maskrcnn 等 安装也是很方便的 直接在终端下用 pipinstallla 即可 至于 labelme 需要先安装 pyqt 所以先 pipinsta

    2026年3月17日
    2
  • markdown字体颜色表

    markdown字体颜色表markdown 字体颜色设置语法如下 fontcolor redsize 3 哈哈哈得到效果如下 哈哈哈 size 规定文本的尺寸大小 可取的范围 从 1 到 7 的数字 浏览器默认值是 3 原文地址 www cnblogs com kexing p 9502576 html fontcolor redsize 3

    2026年3月18日
    2
  • 生成唯一序列号 Unique ID

    生成唯一序列号 Unique ID程序取号的锁竞争和网络延迟是不可避免的 所以最理想的 UniqueID 策略还是本地生成 把发号器内嵌到每个程序中 同时保证生成标准的同步

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号