public static function init() { self::$pid = \posix_getpid(); self::$ppid = \posix_getppid(); self::$child = array(); self::$alias = array(); self::$user_events = array(); self::$shm_to_pid = array(); // self::$shm_to_parent = -1; if (!self::$do_once) { // 初始化事件对象 if (extension_loaded('libevent')) { self::$events = new Libevent(); } else { self::$events = new Select(); } self::$shm = new Shm(__FILE__, 'a'); // 注册用户信号SIGUSR1处理函数 self::onSysEvent(SIGUSR1, EventInterface::EV_SIGNAL, array("\\core\\proc\\Process", 'defaultSigusr1Cbk')); // 注册子进程退出处理函数 self::onSysEvent(SIGCHLD, EventInterface::EV_SIGNAL, array("\\core\\proc\\Process", 'defaultSigchldCbk')); // 注册用户信号SIGUSR2处理函数 self::onSysEvent(SIGUSR2, EventInterface::EV_SIGNAL, array("\\core\\proc\\Process", 'defaultSigusr2Cbk')); // 注册exit回调函数 register_shutdown_function(function () { Process::closeShm(); }); self::$do_once = true; } }
public static function getInstance($is_master = false) { if (null === self::$_instance) { self::$_instance = new static(); if ($is_master) { self::$_instance->getProcManager()->setAliasPid('slef', \posix_getpid()); } } return self::$_instance; }