コード例 #1
0
ファイル: Worker.php プロジェクト: lisonglin0129/LDFRAMEWORK
 /**
  * 初始化所有的worker实例,主要工作为获得格式化所需数据及监听端口
  * @return void
  */
 protected static function initWorkers()
 {
     /** @var static $worker */
     foreach (self::$_workers as $worker) {
         // 没有设置worker名称,则使用none代替
         if (empty($worker->name)) {
             $worker->name = 'none';
         }
         // 获得所有worker名称中最大长度
         $worker_name_length = strlen($worker->name);
         if (self::$_maxWorkerNameLength < $worker_name_length) {
             self::$_maxWorkerNameLength = $worker_name_length;
         }
         // 获得所有_socketName中最大长度
         $socket_name_length = strlen($worker->getSocketName());
         if (self::$_maxSocketNameLength < $socket_name_length) {
             self::$_maxSocketNameLength = $socket_name_length;
         }
         // 获得运行用户名的最大长度
         if (empty($worker->user) || posix_getuid() !== 0) {
             $worker->user = self::getCurrentUser();
         }
         $user_name_length = strlen($worker->user);
         if (self::$_maxUserNameLength < $user_name_length) {
             self::$_maxUserNameLength = $user_name_length;
         }
         // 如果端口不可复用,则直接在主进程就监听
         if (!$worker->reusePort) {
             // 监听端口
             $worker->listen();
         }
     }
 }