예제 #1
0
 /**
  * Fork some worker processes.
  * @return void
  */
 protected static function forkWorkers()
 {
     foreach (self::$_workers as $worker) {
         if (self::$_status === self::STATUS_STARTING) {
             if (empty($worker->name)) {
                 $worker->name = $worker->getSocketName();
             }
             $worker_name_length = strlen($worker->name);
             if (self::$_maxWorkerNameLength < $worker_name_length) {
                 self::$_maxWorkerNameLength = $worker_name_length;
             }
         }
         while (count(self::$_pidMap[$worker->workerId]) < $worker->count) {
             static::forkOneWorker($worker);
         }
     }
 }
예제 #2
0
 /**
  * 初始化所有的worker实例,主要工作为获得格式化所需数据及监听端口
  * @return void
  */
 protected static function initWorkers()
 {
     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;
         }
         $user_name_length = strlen($worker->user);
         if (self::$_maxUserNameLength < $user_name_length) {
             self::$_maxUserNameLength = $user_name_length;
         }
     }
 }
예제 #3
0
 /**
  * 创建子进程
  * @return void
  */
 protected static function forkWorkers()
 {
     /** @var static $worker */
     foreach (self::$_workers as $worker) {
         // 启动过程中需要得到运行用户名的最大长度,在status时格式化展示
         if (self::$_status === self::STATUS_STARTING) {
             if (empty($worker->name)) {
                 $worker->name = $worker->getSocketName();
             }
             $worker_name_length = strlen($worker->name);
             if (self::$_maxWorkerNameLength < $worker_name_length) {
                 self::$_maxWorkerNameLength = $worker_name_length;
             }
         }
         // 创建子进程
         while (count(self::$_pidMap[$worker->workerId]) < $worker->count) {
             static::forkOneWorker($worker);
         }
     }
 }