通过这个帖子:https://www.workerman.net/q/8196 主进程搞懂了,但是涉及到的子进程事件交给了event,想知道里面是怎么实现(主要是workerman如何调用控制的)
列如定时器Timer类
public static function init($event = null)
{
// 如果是子进程,则赋予事件后直接退出
if ($event) {
self::$_event = $event;
return;
}
// 这里是主进程(初始化)使用的是`pcntl_alarm`做定时。
if (\function_exists('pcntl_signal')) {
\pcntl_signal(\SIGALRM, array('\Workerman\Lib\Timer', 'signalHandle'), false);
}
}
赋予事件后直接退出是怎么工作的呢
其实这个就是注册(init)用,具体处理逻辑是$event内,因为是子进程,所以具体调度由master process去处理
没听明白
这只是个初始化, return掉是因为即使在子进程, \function_exists('pcntl_signal')也是有效(true)的, 只是不起作用而已
想知道这个
self::$_event = $event;
里面的故事Worker::$globalEvent = new \Workerman\Events\Libevent;
太下面就是红黑树了,有点难
对,就是blogdaren说的那样