workerman的Worker类代码分析
static::checkSapiEnv(); #检测sapi的环境
SAPI 服务器应用程序编程接口,即PHP与其它应用交互接口,PHP脚本要执行有很多方式,通过Web的服务,或者直接在命令行下,也可以嵌入在其他程序中
常见SAPI有:cgi fast-cgi cli(命令行) apache模块的DDL isapi
static::init(); #初始化
static::lock(); #锁上文件,其它进程不能在用了,不能操作
static::parseCommand(); #判断是不是linux系统, 命令行
static::daemonize(); #守护进程的东西 static::$_os !==OS_TYPE_LINUX 判断是否是linux
static::initWorkers(); #初始化所有的workers实例 static::getUiColumns()获取字段就是下面的图片
是下面的图片
static::installSignal(); #安装信号
static::saveMasterPid(); #保存主进程id master主进程保存起来
#以上的方法是在锁上之后在操作
static::unlock(); #解锁
static::displayUI(); #展示页面
static::forkWorkers(); #子进程
static::resetStd(); #重置的 标准输入和输出
static::monitorWorkers(); #监控子进程的
forkOneWorkerForLinux($worker) #linux子进程时候调用 $worker->run()
public function run()
就可以达到回调了 t h i s ( 就 是 当 前 w o r k e r 实 例 ) 当 个 这 个 this(就是当前worker实例 )当个这个 this(就是当前worker实例)当个这个this->onWorkerStart属性的参数,就注册进去了
call_user_func
call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] ) : mixed
第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数
public function acceptConnection($socket) 是接受一个连接
$this 是当前woreker实例
p a r s e r : : e n c o d e ( parser::encode( parser::encode(send_buffer, $this) #这是打包的处理
Worker.php