示例#1
0
 /**
  * 检查配置的pid文件是否可写
  * @return void
  */
 public static function checkPidFile()
 {
     // 已经有进程pid可能server已经启动
     if (@file_get_contents(WORKERMAN_PID_FILE)) {
         \Man\Core\Master::notice("Server already started", true);
         exit;
     }
     if (is_dir(WORKERMAN_PID_FILE)) {
         exit("\npid-file " . WORKERMAN_PID_FILE . " is Directory\n\nServer start failed\n\n");
     }
     $pid_dir = dirname(WORKERMAN_PID_FILE);
     if (!is_dir($pid_dir)) {
         if (!mkdir($pid_dir, true)) {
             exit("Create dir {$pid_dir} fail\n");
         }
     }
     if (!is_writeable($pid_dir)) {
         exit("\nYou should start the server as root\n\nServer start failed\n\n");
     }
 }
示例#2
0
 /**
  * 检查配置的pid文件是否可写
  * @return void
  */
 public static function checkPidFile()
 {
     // 已经有进程pid可能server已经启动
     if (@file_get_contents(WORKERMAN_PID_FILE)) {
         \Man\Core\Master::notice("Workerman already started", true);
         exit;
     }
     if (is_dir(WORKERMAN_PID_FILE)) {
         exit("\npid-file " . WORKERMAN_PID_FILE . " is Directory\n\nWorkerman start failed\n\n");
     }
     $pid_dir = dirname(WORKERMAN_PID_FILE);
     if (!is_dir($pid_dir)) {
         if (!mkdir($pid_dir, 0777, true)) {
             exit("Create dir {$pid_dir} fail\n");
         }
     }
     if (!is_writeable($pid_dir)) {
         exit("\n{$pid_dir} is not writeable, can't write pid file\n\nWorkerman start failed\n\n");
     }
 }
示例#3
0
 /**
  * 检查worker配置、worker语法错误等
  * @return void
  */
 public static function checkWorkersConfig()
 {
     foreach (Config::getAllWorkers() as $worker_name => $config) {
         if (strlen($worker_name) > self::$maxWorkerNameLength) {
             self::$maxWorkerNameLength = strlen($worker_name);
         }
         if (isset($config['user']) && strlen($config['user']) > self::$maxUserNameLength) {
             self::$maxUserNameLength = strlen($config['user']);
         }
         if (isset($config['listen']) && strlen($config['listen']) > self::$maxListenLength) {
             self::$maxListenLength = strlen($config['listen']);
         }
     }
     $total_worker_count = 0;
     // 检查worker
     echo "------------------------ WORKERS -------------------------------\n";
     echo "worker", str_pad('', self::$maxWorkerNameLength + 2 - strlen('worker')), "listen", str_pad('', self::$maxListenLength + 2 - strlen('listen')), "processes", str_pad('', self::$maxProcessCountLength + 2 - strlen('processes')), "", "status\n";
     foreach (Config::getAllWorkers() as $worker_name => $config) {
         echo str_pad($worker_name, self::$maxWorkerNameLength + 2);
         if (isset($config['listen'])) {
             echo str_pad($config['listen'], self::$maxListenLength + 2);
         } else {
             echo str_pad('none', self::$maxListenLength + 2);
         }
         if (empty($config['start_workers'])) {
             \Man\Core\Master::notice(str_pad($worker_name, 40) . " [start_workers not set]\tWorkerman start fail");
             exit(str_pad('', self::$maxProcessCountLength + 2) . " [start_workers not set]\n\nWorkerman start fail\n");
         }
         echo str_pad(' ' . $config['start_workers'], self::$maxProcessCountLength + 2);
         $total_worker_count += $config['start_workers'];
         // 语法检查
         if (!($worker_file = \Man\Core\Lib\Config::get($worker_name . '.worker_file'))) {
             \Man\Core\Master::notice("{$worker_name} not set worker_file in conf/conf.d/{$worker_name}.conf");
             echo " [not set worker_file] \n";
             continue;
         }
         echo " [OK] \n";
     }
     if ($total_worker_count > \Man\Core\Master::SERVER_MAX_WORKER_COUNT) {
         \Man\Core\Master::notice("Number of worker processes can not be greater than " . \Man\Core\Master::SERVER_MAX_WORKER_COUNT . ".\tPlease check start_workers in " . WORKERMAN_ROOT_DIR . "config/main.php\tWorkerman start fail");
         exit("\nNumber of worker processes can not be greater than " . \Man\Core\Master::SERVER_MAX_WORKER_COUNT . ".\nPlease check start_workers in " . WORKERMAN_ROOT_DIR . "config/main.php\n\nWorkerman start fail\n");
     }
     echo "----------------------------------------------------------------\n";
 }