Exemple #1
0
 /**
  * 根据配置文件创建Workers
  * @return void
  */
 protected static function createWorkers()
 {
     // 循环读取配置创建一定量的worker进程
     foreach (Lib\Config::getAllWorkers() as $worker_name => $config) {
         // 初始化
         if (empty(self::$workerPids[$worker_name])) {
             self::$workerPids[$worker_name] = array();
         }
         while (count(self::$workerPids[$worker_name]) < $config['start_workers']) {
             $pid = self::forkOneWorker($worker_name);
             // 子进程退出
             if ($pid == 0) {
                 self::notice("CHILD EXIT ERR");
             }
         }
     }
 }
 /**
  * 根据配置文件创建Workers
  * @return void
  */
 protected static function spawnWorkers()
 {
     // 生成一定量的worker进程
     foreach (Lib\Config::getAllWorkers() as $worker_name => $config) {
         // 初始化
         if (empty(self::$workerPidMap[$worker_name])) {
             self::$workerPidMap[$worker_name] = array();
         }
         while (count(self::$workerPidMap[$worker_name]) < $config['start_workers']) {
             // 子进程退出
             if (self::createOneWorker($worker_name) == 0) {
                 self::notice("Worker exit unexpected");
                 exit(500);
             }
         }
     }
 }
Exemple #3
0
 /**
  * 根据配置文件创建Workers
  * @return void
  */
 protected static function createWorkers()
 {
     require_once WORKERMAN_ROOT_DIR . 'Core/ThreadWorker.php';
     $workers = Lib\Config::getAllWorkers();
     foreach ($workers as $worker_name => $config) {
         $main_socket = isset(self::$listenedSockets[$worker_name]) ? self::$listenedSockets[$worker_name] : null;
         $worker_file = \Man\Core\Lib\Config::get($worker_name . '.worker_file');
         self::$threads[$worker_name] = new \Pool($config['start_workers'], '\\Man\\Core\\Worker', array($main_socket, $worker_file, $worker_name));
         for ($i = 0; $i < $config['start_workers']; $i++) {
             self::$threads[$worker_name]->submit(new ThreadWorker());
         }
     }
 }