blog
  • README
  • php
    • swoole
      • manageProcess + redis 实现 ppt 转 pdf 服务
      • 基于 swoole 的多进程消息同步微服务 -- (3)实现 swoole 多进程消息同步微服务
      • 基于 swoole 的多进程消息同步微服务 -- (2)阿里云日志拉取实现与数据 check
      • manageProcess - 用php+swoole实现多进程管理类
      • 基于 swoole 的多进程消息同步微服务 -- (1)需求介绍和系统架构设计
    • php 信号处理
  • golang
    • golang 学习篇1 --- 实现一个简单的base64加解密
  • fromChat
    • 发红包问题
Powered by GitBook
On this page
  1. php
  2. swoole

manageProcess - 用php+swoole实现多进程管理类

Previous基于 swoole 的多进程消息同步微服务 -- (2)阿里云日志拉取实现与数据 checkNext基于 swoole 的多进程消息同步微服务 -- (1)需求介绍和系统架构设计

Last updated 6 years ago

知识储备: 1、*nux 中所有进程在最开始都由一个pid为1的进程(init 进程)创建,之后再由其创建子进程; 2、父进程需要对子进程进行管理,保证程序不会出现异常情况,通常的子进程创建方式为fork,即完全克隆父进程; 3、子进程在销毁时也需要释放自己的资源,需要由其父进程实现 wait 函数,其中 wait 和 fork 函数总是同时出现,若是父进程忘记执行wait函数,子进程的父进程id将变成1并成为僵尸进程,正常情况下wait函数返回-1,当监测到有子进程退出时返回值为该进程pid; SIGKILL 信号信号量为15,可通过kill 命令对指定pid发送该信号;

swoole 在进程管理中为php实现了一些简单易用的进程创建函数,例如:new process,wait,write、read、push等操作,可以方便快捷的实现进程间通信和服务管理;

架构设计 1、心跳检测:使用共享内存(swoole_table)实现进程信息记录,由master进程启动monitor进程并在其内实现子进程的心跳检测; 2、任务进程:任务进程由monitor进程克隆而来,需要实现钩子函数 flush 进程时间戳,由任务进程实现; 3、进程管理:monitor 进程根据配置和共享内存中的心跳检测记录实现进程的创建、销毁和数据回收工作; 4、日志记录:在关键点记录每一次执行的日志,例如:monitor进程新建、任务进程新建及销毁、master进程收到kill信号灯;

核心代码实现

swoole_table 初始化:

master 进程实现:

monitor 进程监控实现: