首页 > 科技 >

86、Workerman通信框架-核心Worker类-monitorWorkers方法分析

2019-08-16 10:17:58 暂无 阅读:1948 评论:0

monitorWorkers方式是静态方式runAll中的最后一个执行方式.负责监控工作历程。这是因为workerman框架是多历程的运行方式,是以为了避免子历程成为孤儿或僵尸历程,是以需要对这个fork出来的工作历程进行监控

1、源码阅读

凭据当前的系统,挪用响应的方式针对linux,则挪用monitorWorkersForLinux

设置当前框架的运行状况 static::$_status

while死轮回,依次挪用pcntl_signal_dispatch、pcntl_wait、pcntl_signal_dispatch。进行历程间的旌旗通信处理,并获取正常退出的工作历程的历程id

判断历程id是否是正常返回:

如是 则 遍历父历程的静态属性static::$_pidMap,找到退出的历程id是属于哪个worker实例化对象下的历程id,把其删除,并重置父历程的静态属性static::$_idMap关于此worker实例化对象下的id属性值。紧要着,再判断框架的运行状况,如处于运行阶段,则挪用static::forkWorkers(),进行从新建立工作历程。再判断此正常退出的历程id是否处于父历程的静态属性static::$_pidsToRestart中,如是则挪用static::reload()进行重启

如不是 则判断当前框架状况是否处于shutdown,而且static::$_pidMap为空。如知足则挪用exitAndClearAll进行完结法式针对windows,则挪用monitorWorkersForWindows

设置准时器,每隔1s执行当前静态方式checkWorkerStatusForWindows

遍历父历程静态属性static::$_processForWindows,获取每个执行号令历程的运行状况

如不再运行,则挪用static::forkOneWorkerForWindows进行建立

相反则打印错误信息

2、执行流程图

86、Workerman通信框架-核心Worker类-monitorWorkers方法分析

相关文章